输入
第1行:一个数N,N为正整数的数量。
第2 - N+1行,N个正整数。
(N <= 100, 所有正整数的和 <= 10000)
输出
输出这个最小差
输入示例
5
1
2
3
4
5
输出示例
1
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 105;
int n,sum;
int a[maxn],W;
int dp[maxn*100];
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n; i++)
{
scanf("%d",&a[i]);
sum += a[i];
}
W = sum/2;
for(int i = 1;i <= n; i++)
{
for(int j = W;j >= a[i]; j--)
{
dp[j] = max(dp[j],dp[j-a[i]] + a[i]);
}
}
printf("%d\n",abs(sum - dp[W]*2));
return 0;
}