(Relax DFS专题)使用DFS来解决部分和问题

来源:互联网 发布:淘宝买家信用254很低吗 编辑:程序博客网 时间:2024/05/22 12:54
/* * test.cpp * *  Created on: 2013年12月17日 *      Author: Administrator */#include <iostream>using namespace std;const int maxn = 500;int n,k;int a[maxn];bool dfs(int i , int sum){//当n个数都决定以后,判断它们的和是否为kif(i == n){return sum == k;}if(dfs(i+1,sum)){//不加a[i]的情况return true;}if(dfs(i+1,sum+a[i])){//加上a[i]的情况return true;}return false;//如果加不加上a[i]都无法凑成k,则返回false}int main(){while(scanf("%d",&n)!=EOF){int i;for(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
原创粉丝点击