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;}

原创粉丝点击