#include<stdio.h> #define max(x,y) x>y?x:y int main(){ int n,x,y; scanf("%d",&n); while(n--){ int num[1010]={0}; int sum[100010]={0}; int m,i,k,max=0; scanf("%d",&m); for(i=1;i<=m;i++){ scanf("%d",&num[i]); max+=num[i]; } k=max/2; for(x=1;x<=m;x++){ for(y=k;y>=num[x];y--){ sum[y]=max(sum[y],sum[y-num[x]]+num[x]); } } printf("%d ",max-2*sum[k]); } }
哇哈,这题和zb的生日是一模一样的题目。。。用的是递推算法,这回终于明白了
版权声明:本文为博主原创文章,未经博主允许不得转载。