标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 370 Accepted Submission(s): 173
#include<bits/stdc++.h> using namespace std; int t; int n; int fa[25]; map<int,int>dp1; map<int,int>dp2; int sum; int m,exm; int main() { while(scanf("%d",&t)!=EOF) { for(int i=1; i<=t; i++) { sum=0; dp1.clear(); dp2.clear(); scanf("%d",&n); for(int j=0; j<n; j++) { scanf("%d",&fa[j]); sum+=fa[j]; } dp1[0]=1; dp1[fa[0]]=1; for(int j=1; j<n; j++) { dp2.clear(); for(int k=0; k<=sum; k++) { if(dp1[k]) { dp2[k]=1; dp2[k+fa[j]]=1; dp2[abs(k-fa[j])]=1; } } for(int k=0; k<=sum; k++) { if(dp2[k]&&!dp1[k]) dp1[k]=1; } } scanf("%d",&m); for(int j=1; j<=m; j++) { scanf("%d",&exm); if(dp1[exm]) printf("YES\n"); else printf("NO\n"); } } } return 0; }
标签:
原文地址:http://www.cnblogs.com/hsd-/p/5174028.html