#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
 
int N, S;
int num[21];
int choice[21];
int ans;
 
int check(int cnt)
{
    int sum = choice[0];
    
    for(int i = 1; i < cnt; i++)
    {
        sum += choice[i];
    }
    
    if(sum == S)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
 
 
void combination(int idx, int cnt)
{
    if(cnt > N)
    {
        return;
    }
    else if(cnt != 0)
    {
        if(check(cnt) == 1)
        {
            ans++;
        }
    }
    
    for(int i = idx; i < N; i++)
    {
        choice[cnt] = num[i];
        combination(i+1, cnt+1);
    }
}
 
int main(void)
{
//    freopen("B1182_input.txt", "r", stdin);
    
    cin >> N >> S;
    
    for(int i = 0; i < N; i++)
    {
        cin >> num[i];
    }
    
    combination(00);
    
    cout << ans;
    
    return 0;
}
cs

'Baekjoon > etc' 카테고리의 다른 글

[백준 1439] 뒤집기 (C/C++)  (0) 2019.12.30
[백준 1253] 좋다 (C/C++)  (0) 2019.12.30
[백준 1145] 적어도 대부분의 배수 (C/C++)  (0) 2019.12.18
[백준 1065] 한수 (C/C++)  (0) 2019.12.18
[백준 1024] 수열의 합 (C/C++)  (0) 2019.12.17

+ Recent posts