首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

9度教程第100题

2013-02-19 
九度教程第100题题目地址:http://jobdu.sinaapp.com/problem.php?cid1040&pid99C语言源码:#includestdi

九度教程第100题

题目地址:http://jobdu.sinaapp.com/problem.php?cid=1040&pid=99

C语言源码:

#include<stdio.h>#include<limits.h>#define maxsize 4010#define size 2000int dp[110][maxsize];int max2(int a,int b){return a>b?a:b;}int max(int a,int b,int c){return max2(a,b)>c?max2(a,b):c;}int a[1010];int main(){int t,n,num,i,j,zero;scanf("%d",&t);for(num=1;num<=t;num++){zero=0;scanf("%d",&n);j=1;for(i=1;i<=n;i++){scanf("%d",&a[j++]);if(a[j-1]==0){zero=1;j--;}}n=j-1;for(i=0;i<110;i++)for(j=0;j<maxsize;j++)dp[i][j]=INT_MIN;dp[0][size]=0;for(i=1;i<=n;i++)for(j=0;j<maxsize;j++)if(j-a[i]>=0&&j+a[i]<maxsize)dp[i][j]=max(dp[i-1][j-a[i]]+a[i],dp[i-1][j+a[i]]+a[i],dp[i-1][j]);else{if(j-a[i]<0&&j+a[i]<maxsize)dp[i][j]=max2(dp[i-1][j+a[i]]+a[i],dp[i-1][j]);elseif(j+a[i]>=maxsize&&j-a[i]>=0)dp[i][j]=max2(dp[i-1][j-a[i]]+a[i],dp[i-1][j]);elsedp[i][j]=dp[i-1][j];}if(dp[n][size]==0&&zero==0)printf("Case %d: -1\n",num);elseprintf("Case %d: %d\n",num,dp[n][size]/2);}}


热点排行