UVA 562 Dividing coins

来源:互联网 发布:c语言用什么软件编写好 编辑:程序博客网 时间:2024/05/31 13:16

题目链接:点击打开链接

01背包,给你几个硬币,分成两部分,是他们的和的差值尽量接近

从硬币总和的一半开始考虑

#include<iostream>#include<cstdio>#include<cstring>#include<stack>#include<algorithm>using namespace std;int dp[50010];int num[1010];int main(){#ifndef ONLINE_JUDGE    freopen("in.txt","r",stdin);#endifint t;cin>>t;while(t--){int n;cin>>n;int sum=0;memset(dp,0,sizeof(dp));for(int i=0;i<n;i++){cin>>num[i];sum+=num[i];}for(int i=0;i<n;i++){for(int j=sum/2;j>=num[i];j--){dp[j]=max(dp[j],dp[j-num[i]]+num[i]);}}cout<<sum-2*dp[sum/2]<<endl;}}


原创粉丝点击