深度优先搜索----部分和问题

来源:互联网 发布:php pdo查询数据库 编辑:程序博客网 时间:2024/05/21 14:08
/*

 *题意:

提供正数a1,a2,....an。判断从这些书中选几个数的和能否刚好等于k。

 1<=n<=20
 -10^8<=ai<=10^8
 -10^8<=k<=10^8
 * */
#include <iostream>
#include <cstdio>
#define MAXN 20
using namespace std;
int a[MAXN];
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<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&k);
if(DFS(0,0))
printf("Yes\n");
else
printf("No\n");
return 0;
}
0 0