部分和问题(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") ;
	
}
发布了55 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ABV09876543210/article/details/105108047
今日推荐