您的位置:首页 > 其它

部分和问题

2016-04-07 13:30 176 查看

从给定整数a1,a2,a3...an,判断是否可以从中选出若干数,使他们的和恰好为k。

#include <cstdio>
#include <cstdlib>

using namespace std;

const int Maxn = 21;
int a[Maxn];
int n,k;

bool dfs(int k, int i){
if(i==n){
return k==0;
}

return (dfs(k-a[i], i+1) | dfs(k,i+1));
}
int main()
{
scanf("%d %d", &n,&k);
for(int i=0; i<n; ++i){
scanf("%d", &a[i]);
}

printf("%d\n", dfs(k,0));
return 0;
}


深度优先搜索

时间复杂度为O(2n)因此可以用于当n较小时候的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  搜索 dfs