您的位置:首页 > 其它

南阳理工OJ_题目456 邮票分你一半

2014-05-14 15:48 197 查看
//把邮票分值之和的一般作为背包的容量,尽可能的多装 
#include <iostream>
#include <cstring>

using namespace std;

int n;
int a[1010];
int d[50010];
int S;

int main()
{
    int T;
    cin >>T;
    while(T--)
    {
        cin >> n;
        int sum = 0;
        for(int i = 1; i <= n; i++)
        {
            cin >> a[i];
            sum += a[i];
        }
        S = sum / 2;

        memset(d, 0, sizeof(d));
        for(int i = 1; i <= n; i++)
            for(int j = S; j >= a[i]; j--)
            {
                d[j] = d[j] > d[j-a[i]] + a[i] ? d[j] : d[j-a[i]] + a[i];
            }

        cout << sum - d[S] -d[S] << endl;
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: