Party Games UVA - 1610

 

好难得调试!!!!!!

 1 #include<set>
 2 #include<cstdio>
 3 #include<string>
 4 #include<cstring>
 5 #include<iostream>
 6 #include<algorithm>
 7 using namespace std;
 8 
 9 string s[1005];
10 
11 int main()
12 {   int n;
13     while(cin>>n&&n){
14         string a,b,c;
15         for(int i=0;i<n;i++) cin>>s[i];
16         sort(s,s+n);
17         a=s[n/2-1],b=s[n/2];
18         
19         int la=a.size(),lb=b.size(),i;
20         int L=min(la,lb);
21         bool flag=true;
22         for(i=0;i<L;i++){
23             if(a[i]<b[i]){
24                 flag=false;
25                 break;
26             }
27             c=c+a[i];
28         }
29         if(flag) cout<<c<<endl;
30         else{
31             if(la>lb){
32                 if(i==lb-1){
33                     if(b[i]-a[i]!=1) c=c+(++a[i]);
34                     else{
35                         c=c+a[i];
36                         if(i==la-2) c=c+a[i+1];
37                         else{
38                             while(a[++i]=='Z'){
39                                 c=c+a[i];
40                                 if(i==la-1) break;
41                             }
42                             if(i==la-1){
43                                 if(a[i]!='Z') c=c+a[i];
44                             }
45                             else c=c+(++a[i]);
46                         }
47                     }
48                 }
49                 else{
50                     if(b[i]-a[i]==1) c=c+b[i];
51                     else c=c+(++a[i]);
52                 }
53             }
54             if(la<=lb){
55                 if(i==la-1) c=c+a[i];
56                 else c=c+(++a[i]);
57             }
58             cout<<c<<endl;
59         }    
60     }
61     return 0;
62 }

 正解:

枚举a串的长度,然后在枚举的串尾添加一个字符使满足大小关系.

 1 #include<set>
 2 #include<cstdio>
 3 #include<string>
 4 #include<cstring>
 5 #include<iostream>
 6 #include<algorithm>
 7 using namespace std;
 8 
 9 string s[1005];
10 
11 int main()
12 {   int n;
13     while(cin>>n&&n){
14         string a,b,tem;
15         for(int i=0;i<n;i++) cin>>s[i];
16         sort(s,s+n);
17         a=s[n/2-1],b=s[n/2];
18         
19         int cur=0;
20         bool flag=true;
21         while(flag){
22             for(int i=0;i<26;i++){
23                 tem=a.substr(0,cur);
24                 tem+=i+'A';
25                 if(tem>=a&&tem<b){
26                     flag=false;
27                     break;
28                 }
29             }
30             cur++;
31         }
32         cout<<tem<<endl;
33     }
34     return 0;
35 }

 

posted @ 2017-07-31 17:16  天之道,利而不害  阅读(141)  评论(0编辑  收藏  举报