题目1453:Greedy Tino

来源:互联网 发布:gps时间同步软件 编辑:程序博客网 时间:2024/05/17 09:03
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int t,T,n,wight[101],TotolWight;int GetMax(int a,int b){    return a>b?a:b; }int GetAbs(int x){    return x<0?-x:x;   }int DP(){    int i,j,a[2][2001],k=0;    memset(a,-1,sizeof(a));    a[0][0]=0;    for (i=1;i<=n;i++)    {       k=1-k;       for (j=0;j<=TotolWight;j++) a[k][j]=a[1-k][j];       for (j=0;j<=TotolWight-wight[i];j++)         if (a[1-k][j]>=0)           a[k][j+wight[i]]=GetMax(a[k][j+wight[i]],a[1-k][j]+wight[i]);        for (j=0;j<=TotolWight;j++)         if (a[1-k][j]>=0)            a[k][GetAbs(j-wight[i])]=GetMax(a[k][GetAbs(j-wight[i])],a[1-k][j]+wight[i]);     }     if ( !a[k][0] && wight[1] ) return -1;    return a[k][0]/2;}int main(){    scanf("%d",&T);    for (t=1;t<=T;t++)    {       scanf("%d",&n); TotolWight=0;       for (int i=1;i<=n;i++)        {           scanf("%d",&wight[i]);           TotolWight+=wight[i];       }       sort(wight+1,wight+1+n);        printf("Case %d: %d\n",t,DP());     }     return 0;   } 
0 0
原创粉丝点击