-
[Algorithm] C++ 합이 같은 부분집합(DFS)Programming/Algorithm 2020. 1. 6. 15:25
입력예제 1
6
1 3 5 6 7 10
출력예제 1
YES
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> #include<algorithm> using namespace std; int n, a[11], total = 10; bool flag = false; void DFS(int L, int sum) { if (sum > (total / 2)) return; if (flag == true) return; if (L == n + 1) { if (sum == (total - sum)) { flag = true; } } else { DFS(L + 1, sum + a[L]); // 누적되는과정 DFS(L + 1, sum); // 사용하지 않을것이면 그냥 가는 것 } } int main() { int i; scanf("%d", &n); for (i = 1; i <= n; i++) { scanf("%d", &a[i]); total += a[i]; } DFS(1, 0); if (flag) printf("YES\n"); else printf("NO\n"); return 0; }
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm] 조합 (0) 2020.04.24 [Algorithm] C++ 특정 수 만들기(DFS) (0) 2020.01.07 [Algorithm] C++ 부분집합(DFS) (0) 2020.01.06 [Algorithm] C++ 기차운행(stack 응용) (0) 2020.01.03 [Algorithm] C++ 올바른 괄호(Stack) (0) 2020.01.02