UVA 562 Dividing coins(01背包)

来源:互联网 发布:retrofit 传json 编辑:程序博客网 时间:2024/05/01 14:34

总钱数的一半做背包容量

#include <bits/stdc++.h>using namespace std;int n,sum,W,res;int coins[110];int dp[50010];void solve(){    memset(dp,0,sizeof(dp));    W = sum/2;    for(int i = 0; i < n; ++i)    {        for(int j = W; j >= coins[i]; --j)        {            dp[j] = max(dp[j],dp[j-coins[i]]+coins[i]);        }    }    res = (sum-dp[W])-dp[W];}int main(){    ios::sync_with_stdio(false);    int T;    cin >> T;    while(T--)    {        sum = 0;        cin >> n;        for(int i = 0; i < n; ++i)        {            cin >> coins[i];            sum += coins[i];        }        solve();        cout << res << endl;    }    return 0;}
原创粉丝点击