题目分析:
DFS设置出口,在出口的情况分成两种,一种是加,一种是不加;于是代码:
#include <iostream>
#include <cmath>
using namespace std;
long int a[25];
int n,k;
// 3 2
// 1 2 3
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;
}
void solve(){
if(dfs(0,0)) printf("Yes\n");
else{
printf("No\n");
}
}
int main()
{
cin >> n >> k;
for(int i = 0;i < n;i++){
cin >> a[i];
}
solve();
return 0;
}