hdu4422The Little Girl who Picks Mushrooms

4422

小于等于3 的时候就是1024 4的时候 讨论 5的时候讨论 注意重量为0的情况

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<cmath>
 7 using namespace std;
 8 int a[10];
 9 int n;
10 int main()
11 {
12     int i,j,g;
13     while(scanf("%d",&n)!=EOF)
14     {
15         int sum=0;
16         for(i = 1; i <= n ; i++)
17         {
18             scanf("%d",&a[i]);
19             sum+=a[i];
20         }
21         if(n<=3)
22         {
23             printf("1024
");
24             continue;
25         }
26         else
27         {
28             if(n==4)
29             {
30                 int flag = 0;
31                 for(i = 1; i <= n ; i++)
32                 {
33                     int s1 = 0;
34                     for(j = 1 ; j <= n ; j++)
35                     if(j!=i)
36                     s1+=a[j];
37                     if(s1%1024==0)
38                     {
39                         flag = 1;
40                         break;
41                     }
42                 }
43                 int maxz=0;
44                 for(i = 1; i <= n ; i++)
45                     for(j = 1; j <= n ; j++)
46                     {
47                         if(j!=i)
48                         {
49                             if(a[i]+a[j])
50                             {
51                                 if((a[i]+a[j])%1024==0)
52                                 maxz = 1024;
53                                 else
54                                 maxz = max(maxz,(a[i]+a[j])%1024);
55                             }
56                         }
57                     }
58                 if(flag)
59                 printf("1024
");
60                 else
61                 printf("%d
",maxz);
62             }
63             else
64             {
65                 int maxz = 0;
66                 for(g = 1; g <= n ; g++)
67                 {
68                     for(i = 1; i <= n ; i++)
69                     {
70                         if(i==g) continue;
71                         int s1 = 0;
72                         for(j = 1 ; j <= n ; j++)
73                         if(j!=i&&j!=g)
74                         s1+=a[j];
75                         if(s1%1024==0)
76                         {
77                             if((sum-s1)&&(sum-s1)%1024==0)
78                             maxz = 1024;
79                             else
80                             maxz = max(maxz,(sum-s1)%1024);
81                         }
82                     }
83                 }
84                 printf("%d
",maxz);
85             }
86         }
87     }
88     return 0;
89 }
View Code
原文地址:https://www.cnblogs.com/shangyu/p/3401087.html