美文网首页编程练习
编程练习-2022-05-23-Andy

编程练习-2022-05-23-Andy

作者: nase_luobeng | 来源:发表于2022-05-23 22:44 被阅读0次

    题目描述

    两个大盗终于偷来了n个金块,第i块重量为x[i]斤。他们希望将这n个金块分成两组,要让这两组重量最接近,求每组重量为多少。

    输入输出格式

    输入格式

    输入第一行为正整数n,n<=20
    第二行为n个正整数,均不超过1000

    输出格式

    输出一行包含两个数字,较小的数字先输出。

    AC代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,a[10000],dp[10000],w[10000],v[10000];
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=1;i<=n;i++){w[i]=a[i];v[i]=w[i];}
        int sum=0;
        for(int i=1;i<=n;i++)sum+=a[i];
        int m=sum/2;
        for(int i=1;i<=n;i++)
            for(int j=m;j>=w[i];j--)
                if(j>=w[i]){
                    //if(dp[j-w[i]]>=dp[j])w[i]=-1;
                    dp[j]=max(dp[j-w[i]]+v[i],dp[j]);
                    
                }
        cout<<dp[m]<<' '<<sum-dp[m];
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:编程练习-2022-05-23-Andy

        本文链接:https://www.haomeiwen.com/subject/eoudprtx.html