hdu 1709 新解
来源:互联网 发布:买了东西淘宝店铺没了 编辑:程序博客网 时间:2024/05/29 16:07
#include<cstdio>#include<cstring>#include<iostream>#define maxn 10000int dp[maxn],hash[maxn];int main(){ int n,sum,i,j,x,cnt; while(scanf("%d",&n)!=EOF) { cnt=0; bool f=true; memset(dp,0,sizeof(dp)); dp[0]=1; sum=0; for(i=1;i<=n;i++) { scanf("%d",&x); memset(hash,0,sizeof(hash)); for(j=0;j<=sum;j++) { if(dp[j]) { hash[j+x]=1; if(j-x>0) hash[j-x]=1; else hash[x-j]=1; } } sum+=x; for(j=0;j<=sum;j++) if(hash[j]) dp[j]=1; } for(i=1;i<=sum;i++) if(dp[i]==0) cnt++; if(cnt==0) printf("0\n"); else { printf("%d\n",cnt); for(i=1;i<=sum;i++) { if(dp[i]==0) { if(f) { printf("%d",i); f=0; } else printf(" %d",i); } } printf("\n"); } } return 0;}