1182번: 부분수열의 합

첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.

www.acmicpc.net

#include <iostream>
using namespace std;
int a[20];
int main() {
    int n,s;
    cin >> n >> s;
    for (int i=0; i<n; i++) {
        cin >> a[i];
    }
    int ans = 0;
    for (int i=1; i<(1<<n); i++) {
        int sum = 0;
        for (int k=0; k<n; k++) {
            if (i&(1<<k)) {
                sum += a[k];
            }
        }
        if (sum == s) {
            ans += 1;
        }
    }
    cout << ans << '\n';
    return 0;
}

'Problem set' 카테고리의 다른 글

[백준] 13023 ABCDE  (0) 2021.02.20
[백준] 14391 종이 조각  (0) 2021.02.20
[백준] 11723 집합  (0) 2021.02.20
[백준] 1248 맞춰봐  (0) 2021.02.20
[백준] 2529 부등호  (0) 2021.02.20
복사했습니다!