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 }