看到这题泪流满面啊有木有。。。。。。。之前有时并查集哈希表有时最短路还有dp字符串匹配。。。看到这题裸背包啊有木有。。。。。。幸福啊。。。。dp开小了RE了两发妈蛋!!(背包就不多说了,,,,,,,01背包看最接近half的是多少嘛)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int a[100];
int dp[10000001];
int main()
{
int m;
while(scanf("%d",&m)!=EOF)
{
int i,j;
int sum=0;
memset(dp,0,sizeof(dp));
for(i=0;i<m;i++) scanf("%d",&a[i]),sum+=a[i];
int half=sum/2;
for(i=0;i<m;i++)
{
for(j=half;j>=a[i];j--)
{
dp[j]=max(dp[j-a[i]]+a[i],dp[j]);
}
}
for(i=half;i>=0;i--) if(dp[i]!=0) break;
printf("%d\n",abs(dp[i]-(sum-dp[i])));
}
return 0;
}