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 }