NYOJ 325

http://acm.nyist.net/JudgeOnline/problem.php?pid=325

用dp的超时代码

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int max(int a,int b)
 4 {
 5     return a>b?a:b;
 6 }
 7 int dp[201000]={0},a[22]={0};
 8 int main()
 9 {
10     int n;
11     while(~scanf("%d",&n))
12     {
13      int sum=0,sum1,r,i,j;
14      for(i=0;i<n;i++)
15      {
16       scanf("%d",&a[i]);
17       sum+=a[i];
18      }
19      sum1=sum/2;
20      for(i=0;i<n;i++)
21       for(j=sum1;j>=a[i];j--)
22       {
23         dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
24       }
25       r=sum-2*dp[sum1];
26       printf("%d\n",r);
27       
28     }
29     return 0;
30 }

 

posted @ 2014-04-25 13:06  hpu张亚飞  阅读(153)  评论(0编辑  收藏  举报