给定整数a1、a2、a3、…、an,判断是否可以从中选出若干数,使他们的和恰好为k。
输入
n=4
a={1,2,4,7}
k=13
输出
Yes(13=2+4+7)
代码:
#include<cstdio>
#define MAX_N 100
int a[MAX_N];
int n,k;
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;
}
int main(){
scanf("%d",&n);
for(int i=0;i<4;i++) {
scanf("%d",&a[i]);
}
scanf("%d",&k);
if (dfs(0,0)) printf("YES\n");
else printf("No\n") ;
}