/* * test.cpp * * Created on: 2013年12月17日 * Author: Administrator */ #include <iostream> using namespace std; const int maxn = 500; int n,k; int a[maxn]; bool dfs(int i , int sum){ //当n个数都决定以后,判断它们的和是否为k if(i == n){ return sum == k; } if(dfs(i+1,sum)){//不加a[i]的情况 return true; } if(dfs(i+1,sum+a[i])){//加上a[i]的情况 return true; } return false;//如果加不加上a[i]都无法凑成k,则返回false } int main(){ while(scanf("%d",&n)!=EOF){ int i; for(i = 0 ; i < n ; ++i){ scanf("%d",&a[i]); } scanf("%d",&k); if(dfs(0,0)){ printf("Yes\n"); }else{ printf("No\n"); } } return 0; }