#include<stdio.h>
int a[99999];
int c1[99999];
int c2[99999];
int d[99999];
int b[99999];
int main()
{
int k,i,j,sum,n;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
for(i=0;i<=sum;i++)
{
b[i]=0;
c1[i]=0;
c2[i]=0;
d[i]=0;
}
for(i=0;i<=1;i++)
c1[i*a[0]]=1;
for(i=1;i<n;i++)
{
for(j=0;j<=sum;j++)
for(k=0;j+k*a[i]<=sum && k<=1; k++)
c2[j+k*a[i]]+=c1[j];
for(j=0;j<=sum;j++)
{
c1[j]=c2[j];
c2[j]=0;
}
}
for(i=sum;i>0;i--)
{
if(c1[i])
{
for(j=1;j<i;j++)
if(c1[j])
{
b[i-j]=1;
}
} }
k=0;
for(i=1;i<=sum;i++)
if(c1[i]==0 && b[i]==0 )
d[k++]=i;
printf("%d\n",k);
if(k)
{
for(i=0;i<k-1;i++)
printf("%d ",d[i]);
printf("%d\n",d[i]);
}
}
return 0;
}
终极母函数 hdu 1079
最新推荐文章于 2020-07-16 23:55:56 发布