반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 1182 부분집합의 합 본문

백준(Baekjoon) 문제

백준 1182 부분집합의 합

huiung 2019. 2. 3. 11:35
반응형
https://www.acmicpc.net/problem/1182

문제와 채점은 위 사이트에서 확인 하실 수 있습니다

 

이 문제는 어떤 원소들을 가지고 있는 집합이 있을 때 그 원소의 부분집합들 중 합이 S가 되는 것의 개수를 찾는 문제입니다.

 

원소의 개수가 20개 까지이므로 20개 일때의 부분집합의 개수는 2^20-1 입니다. 따라서 brute force로 해결이 가능하므로 

 

저는 그냥 함수를 하나 만들어서 재귀적으로 호출하며 모든 경우를 따지는 방법으로 풀었습니다.

 

다음은 코드입니다.

 

#include <iostream>

using namespace std;

int num;

void rec(int *arr,int N, int result, int S, int k) {
	if(result == S)
		num++;
	
	for(int i = k; i < N; i++) {
		rec(arr, N, result+arr[i], S, i+1);
	}
	
} 


int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int N,S;
	cin >> N >> S;
	int arr[N];
	int result;
	
	for(int i = 0; i < N; i++)
		cin >> arr[i];
	
	for(int i = 0; i < N; i++) {
		result = arr[i];
		rec(arr, N, result, S, i+1);
	}
	
	cout << num;
	return 0;
}

 

반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 1260 DFS와 BFS  (0) 2019.02.07
백준 10971 외판원 순회2  (0) 2019.02.06
백준 1747 소수&팰린드롬  (0) 2019.02.02
백준 1644 소수의 연속합  (0) 2019.02.02
백준 5568 카드 놓기  (0) 2019.01.31