/*题目链接*/
题意:有N块饼干,每块饼干有相应的质量,尽可能的平分这些饼干给两个人。
题目分析:题目要求尽可能的平分,可以转化为基本的01背包模型,取饼干质量和的一半作为背包的最大容量,然后用01背包求解即可。(01背包的具体内容参考EOJ 1113)
AC代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int f[1000010];
int main()
{
int n;
while (cin >> n)
{
memset(f,0,sizeof(f));
int sum = 0,a[25];
for (int i=0; i!=n; ++i)
{
cin >> a[i];
sum += a[i];
}
int m = sum >> 1;
for (int i=0; i!=n; ++i)
for (int j=m; j>=a[i]; --j)
f[j] = max(f[j],f[j-a[i]]+a[i]);
cout << sum-f[m]*2 << endl;
}
return 0;
}