본문 바로가기
Algorithm/C++

[백준 1182] 부분수열의 합

by imagineer_jinny 2022. 9. 15.

1182번: 부분수열의 합 (acmicpc.net)

 

1182번: 부분수열의 합

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

www.acmicpc.net

 

 

 

정답 풀이

#include <bits/stdc++.h>
using namespace std;

int n, s;
int arr[30];
int cnt = 0;
void func(int cur, int tot){
  if(cur == n){
    if(tot == s) cnt++;
    return;
  }
  func(cur+1, tot);
  func(cur+1, tot+arr[cur]);
}
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> s;
  for(int i = 0; i < n; i++)
    cin >> arr[i];
  func(0, 0);
  if(s == 0) cnt--;
  cout << cnt;
}

'Algorithm > C++' 카테고리의 다른 글

[백준 15651] N과 M (3)  (0) 2022.09.16
[백준 15650] N과 M (2)  (0) 2022.09.16
[백준 9663] N-Queen  (0) 2022.09.15
[백준 15649] N과 M (1) - 백트래킹  (0) 2022.09.15
[백준 2447] 별 찍기 -10  (0) 2022.09.14

댓글