2 5 2 6 5 8 9 3 2 1 5
0 2
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[10010]; //定义全局变量
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i,j,a[1010]={0},n,sum=0,s=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
s+=a[i];
}
sum=s/2;
memset(dp,0,sizeof(dp));
for(i=0; i<n; i++)
for(j=sum; j>=a[i]; j--)
dp[j]=max(dp[j],dp[j-a[i]]+a[i]); //取还是不取,求出最大值
printf("%d\n",s-2*dp[sum]);
}
return 0;
}
原文:http://blog.csdn.net/zar123456/article/details/51332769