알고리즘/SWEA

[SWEA 3752] 가능한 시험 점수

히더 2018. 7. 23. 14:40

출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWHPkqBqAEsDFAUn



#include <iostream>

#include <algorithm>
using namespace std;
 
#define MAX_N 101
#define MAX_M 10000
 
int i, j, N, result;
int a[MAX_N], check[MAX_M];
 
void input()
{
    cin >> N;
    for (i = 1;i <= N;i++) cin >> a[i];
    for (i = 0;i <= MAX_M;i++) check[i] = 0;
    check[0] = 1;
}
 
void cal()
{
    result = 0;
    for (i = 1;i <= N;i++) for (j = MAX_M;j >= 0;j--)
    {
        if (check[j] > 0 && j+a[i]<=10000)
        {
            check[j+a[i]] += 1;
        }
    }
 
    for (i = 0;i <= MAX_M;i++)
    {
        if (check[i] >0) result += 1;
    }
}
 
 
int main()
{
    int T, t; t = 1;
    cin >> T;
    while (T--)
    {
        input(); cal();
        cout << "#" << t << " " << result << endl;
        t++;
    }
}