部分和问题
给定整数 a1, a2, a3, ..., an, 判断是否可以从中选出若干数,使他们的和恰好为k。
1 <= n <= 20
-10^8 <= ai <= 10^8
-10^8 <= k <= 10^8
int n, k, a[MAX_N]; bool dfs(int i, int sum) { if(i == n) return sum == k; if(dfs(i+1, sum)) return true; if(dfs(i+1, sum + a[i])) return true; return false; } void solve() { if(dfs(0,0)) printf("YES\n"); else printf("NO\n"); }