问题描述:给出n个数,给出和k,能否选出若干个数,使他们的和为k
代码如下
#include<stack>
#include<vector>
#include<cstdio>
using namespace std;
int sum,a[1000],n,k;
bool dfs(int i,int sum){
if(i==1+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 %d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
if(dfs(1,0))printf("yes");
else printf("no");
system("pause");
}
总结:精简的使用了dfs返回bool类型