一个母函数的题目,基本上还是模板题,还是不太熟悉啊;
View Code
#includeusing namespace std; int s[110],c1[10010],c2[10010]; int main() { int n,sum,i,j,k; while(scanf("%d",&n)!=EOF) { sum=0; for(i=1;i<=n;i++) { scanf("%d",&s[i]); sum+=s[i]; } for(i=0;i<=sum;i++) { c1[i]=0; c2[i]=0; } c1[0]=c1[s[1]]=1; for(i=2;i<=n;i++) { for(j=0;j<=sum;j++) for(k=0;k+j<=sum&&k<=s[i];k+=s[i]) { if(j>=k) c2[j-k]+=c1[j]; else c2[k-j]+=c1[j]; c2[j+k]+=c1[j]; } for(j=0;j<=sum;j++) { c1[j]=c2[j]; c2[j]=0; } } int count=0; for(i=1;i<=sum;i++) if(c1[i]) count++; printf("%d\n",sum-count); if(count!=sum) { for(i=1;i<=sum;i++) if(c1[i]==0) { printf("%d",i); break; } i++; for(;i<=sum;i++) if(c1[i]==0) printf(" %d",i); printf("\n"); } } return 0; }