B

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=101;
 4 const int maxnSum=10005;
 5 bool dp[maxn][maxnSum];
 6 int A[maxn];
 7 
 8 
 9 int main()
10 {
11     int n,sum;
12     while(scanf("%d",&n)!=EOF){
13         sum=0;
14         for(int i=1;i<=n*2;i++){
15             scanf("%d",&A[i]);
16             sum+=A[i];
17         }
18         memset(dp,0,sizeof(dp));
19         dp[0][0]=true;
20         for(int i=1;i<=n*2;i++){
21             for(int j=min(i,n);j>=1;j--){
22                 for(int s=1; s<=sum/2;s++){
23                     if(s>=A[i] && dp[j-1][s-A[i]]){
24                         dp[j][s]=true;
25                     }
26                 }
27             }
28         }
29         for(int s=sum/2;s>=1;--s){
30             if(dp[n][s]){
31                 printf("%d\n",s);
32                 break;
33             }
34         }
35     }
36     return 0;
37 }
posted @ 2015-02-27 18:24  acvc  阅读(228)  评论(0编辑  收藏  举报