로곡 P2392 시험 전 포불발의 순수 코드 문제풀이

8168 단어 문제 코드
간단한 dfs
#include 
#include 
#include 
using namespace std;
int maxn, ans, sum;
int s[5], a[25];

void dfs(int time, int cengshu, int i)
{
    if(cengshu > s[i]) 
    {
        maxn = max(maxn, time);
        return ;
    }
    if(time + a[cengshu] <= sum / 2)
        dfs(time + a[cengshu], cengshu + 1, i);
    dfs(time, cengshu + 1, i);
    return ;
}

int main()
{
    scanf("%d%d%d%d", &s[1], &s[2], &s[3], &s[4]);
    for(int i = 1; i <= 4; i ++)
    {
        maxn = -1;
        sum = 0;
        memset(a, 0, sizeof(a));
        for(int j = 1; j <= s[i]; j ++) 
        {
            scanf("%d", &a[j]);
            sum += a[j];
        }
        dfs(0, 1, i);
        ans += (sum - maxn);
    }
    printf("%d
"
, ans); return 0; }

좋은 웹페이지 즐겨찾기