dfs解决部分和问题

问题描述:给出n个数,给出和k,能否选出若干个数,使他们的和为k

代码如下

#include
#include
#include
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类型

你可能感兴趣的:(算法)