#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int a[26],sum[26]={0};
int flag=0;
void dfs(int s,int k){
if(flag==1)return;
if(abs(s)>sum[k])return;
if(s==0||abs(s)==sum[k]){
flag=1;
return;
}
if(k<0){
return;
}
dfs(s-a[k],k-1);
dfs(s,k-1);
dfs(s+a[k],k-1);
return;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
if(i>0)sum[i]=sum[i-1]+a[i];
else sum[0]=a[0];
}
while(m--){
int s;
cin>>s;
flag=0;
dfs(s,n-1);
if(flag==1)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题12.6 (C语言代码)浏览:791 |
汽水瓶 (C语言代码)浏览:697 |
简单的a+b (C语言代码)浏览:759 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:463 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:695 |
循环入门练习5 (C语言代码)浏览:829 |
理财计划 (C语言代码)浏览:465 |
C语言训练-自守数问题 (C语言代码)浏览:740 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:479 |
循环链表与单个结点删除浏览:1102 |