题目链接:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007
题解:
01背包的思想,直接去做就行了(没什么坑点)
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
const int maxn = 1e4+10;
int num[maxn];
int dp[maxn];
int main()
{
int n;
while(cin>>n)
{
int sum=0;
for(int i=0;i<n;i++)
{
cin>>num[i];
sum+=num[i];
}
met(dp,0);
for(int i=0;i<n;i++)
for(int j=sum/2;j>=num[i];j--)
dp[j]=max(dp[j-num[i]]+num[i],dp[j]);
cout<<sum-2*dp[sum/2]<<endl;
}
}