zoukankan      html  css  js  c++  java
  • 51nod 1007 正整数分组

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007

    01背包//需要多做这种题  能看到题想到这个思路

    如果sum为奇数  比如 sum=5,那么sum/2 就是2   所以 总共的sum -dp[sum/2] 就是较大的那一块分类

    然后dp[sum/2]就是较小的

    然后两者做差就是 相差最少的

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 10010;
    int dp[maxn];
    int s[110];
    int main ()
    {
        int n,sum=0;
        cin >> n;
        for(int i=1;i<=n;i++)
        {
            cin >> s[i];
            sum+=s[i];
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=sum/2;j>=s[i];j--)
               dp[j] = max(dp[j],dp[j-s[i]]+s[i]);
        }
        cout << sum-dp[sum/2]-dp[sum/2]<<endl;
    }
  • 相关阅读:
    2021-4-20 日报博客
    2021-4-19 日报博客
    2021-4-17 周报博客
    java web
    java web
    java web
    java
    java
    周末总结8
    java web
  • 原文地址:https://www.cnblogs.com/Draymonder/p/7358479.html
Copyright © 2011-2022 走看看