您的位置:首页 > 其它

DFS之 部分和问题

2016-01-13 21:27 309 查看
《挑战程序设计》书上的DFS题;

从a1开始按顺序决定每个数加或者是不加,紧接着判断就好啦;

#include <bits/stdc++.h>
#define N 10010
using namespace std ;
int n , k ;
int a
;

bool dfs(int i, int sum )
{
if(i==n)  return sum==n;	//*sum==n是判断,如果真true,否则false*//

if(dfs(i+1,sum)) return true ;

if(dfs(i+1,sum+a[i]))  return true ;

else return false ; //*都不符合则返回false*//

}
int main()
{
cin>>n;
for(int i = 0 ; i < n ; i++)
{
cin>>a[i];
}
cin>>k;

if(dfs(0,0))  //*从 i= 0 , sum=0 开始搜索*//
printf("YES\n");
else printf("NO\n");

return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: