dp--正整数分组

来源:互联网 发布:平安科技 知乎 编辑:程序博客网 时间:2024/06/15 13:47

正整数分组:使一个正整数数组分成两个数组且这两个数组和相差最小,
输出这个最小差.

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[5050*2]={0};int a[110];int main(){    int n;    int sum = 0;    int m;    scanf("%d",&n);    for(int i = 0; i < n; i++)    {        scanf("%d",&a[i]);          sum += a[i];    }    m=sum/2;    for(int i = 0; i < n; i++)    {        for(int j = m; j >= a[i]; j--)        {            dp[j]=max(dp[j],dp[j-a[i]]+a[i]);//dp[j]表示前i个数字小于sum/2的最大和         }    }    int ans=sum-dp[m]-dp[m];    printf("%d",ans);    return 0;}
原创粉丝点击