#include
#define N 20
int a[N];
int n,k;
int dfs(int i, int sum);
int main() {
int i;
scanf("%d%d", &n,&k);
for(i=0; i scanf("%d", &a[i]); } if(dfs(0, 0)) { printf("Yes\n"); // printf(""); } else printf("No\n"); return 0; }// 已经从前i项得到了和sum,然后对于i项之后的进行分支 int dfs(int i, int sum) { // 如果前n项都计算过了,则返回sum是否与k相等 if(i==n) return sum==k; // 不加上a[i]的情况 if(dfs(i+1, sum)) return 1; // 加上a[i]的情况 if(dfs(i+1, sum+a[i])) return 1; // 无论是否加上a[i]都不能凑成k就返回false return 0; }