1 条题解

  • 0
    @ 2024-12-24 9:49:00

    C :

    #include"stdio.h"
    #include"string.h"
    int dp[10001];
    int max(int a,int b)
    {
        return a>b?a:b;
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int s[501],i,j,sum=0;
            memset(dp,0,sizeof(dp));
            for(i=0;i<n;i++)
                {
                    scanf("%d",&s[i]);
                    sum+=s[i];
                }
            int v=sum/2;
            for(i=0;i<n;i++)
                for(j=v;j>=s[i];j--)
                dp[j]=max(dp[j],dp[j-s[i]]+s[i]);
                if(dp[v]!=sum-dp[v])
                printf("%d %d\n",dp[v],sum-dp[v]);
                else
                    printf("%d\n",dp[v]);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    784
    时间
    3000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者