본문 바로가기

Algorithm

삼성이의 쇼핑

반응형

간단한 DFS기초 문제인데 벡터 말고 될수있으면 구조체 배열 쓸것 -> 시간초과 발생

#include<iostream>
#include<vector>
using namespace std;
long long N, M;
long long result, cur;
 
struct Node{
    int p;
    int s;
};
Node arr[25];
 
void DFS(int idx)
{
    if ( N <= 0)
    {
        return;
    }
     
    if(cur > result)
    {
        result = cur;
    }
     
    for (int i = idx + 1; i < M; i++)
    {
     
                N -= arr[i].p;
                cur += arr[i].s;
                DFS(i);
                cur -= arr[i].s;
                N +=  arr[i].p;
         
     
    }
}
 
int main(int argc, char** argv)
{
    int test_case;
    int T;
     
    cin >> T;
    /*
       여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
    */
    for (test_case = 1; test_case <= T; ++test_case)
    {
        cin >> N >> M;
        cur = 0;
        result = 0;
 
        for (int i = 0; i < M; i++)
        {
            cin >> arr[i].p >> arr[i].s;
        }
 
        for (int i = 0; i < M; i++)
        {
         
                N -= arr[i].p;
                cur += arr[i].s;
                DFS(i);
                cur -= arr[i].s;
                N +=  arr[i].p;
             
        }
 
        cout << "#" << test_case << " " << result << endl;
 
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
반응형