部分和问题(DFS)

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

输入

n=4
a={1,2,4,7}
k=13

输出

Yes(13=2+4+7)

代码:

#include<cstdio>
#define  MAX_N 100
 
int a[MAX_N];
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<4;i++) {
	
		scanf("%d",&a[i]);
	}
	scanf("%d",&k);
	if (dfs(0,0)) printf("YES\n");
	else printf("No\n") ;
	
}
发布了18 篇原创文章 · 获赞 15 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览