51nod1268(基础dfs)
解题思路:直接搜索找就行了,搜两边,一个是加入这个数字,一边是不加入这个数字
代码:
#include<iostream>
#include<algorithm>
#define maxn 30
using namespace std;
int a[maxn];
int k;
int n;
int flag;
void dfs(int i,int sum,int step)
{
if(step>n)
return;
else
{
if(sum==a[i])
{
flag=1;
return;
}
if(sum>a[i])
dfs(i+1,sum-a[i],step+1);
dfs(i+1,sum,step+1);
}
}
int main()
{
while(cin>>n>>k)
{
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(1,k,1);
if(flag==1)
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
}