部分和问题

描述 给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。

输入首先,n和k,n表示数的个数,k表示数的和。
接着一行n个数。
(1<=n<=20,保证不超int范围)输出如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”样例输入
4 13
1 2 4 7
样例输出
YES
2 4 7
代码:


#include
using namespace std;
int n,k,a[10001];
int flag=0;
void dfs(int u,int step,int sum)
{
	if(u==n)
	{   if(k==sum)
	{
		flag=1;
		cout<<"YES"<>i&1)
	cout<>n>>k;
	for(int i=0;i>a[i];
	dfs(0,0,0);
if(flag==0)
cout<<"NO"<

 

你可能感兴趣的:(搜索)