这个题感觉好绕,最后绕出来了,发现uDebug里面的也有错??
直接暴力求解法就出来了,不用比较啥的。
如果用注释掉的“比较法”代码,估计错就错在是’A’到’Z’的序列,如果超过Z还要长度加一的。
#include<bits/stdc++.h>
using namespace std;
int main(void){
int n;
while(scanf("%d",&n)==1&&n!=0){
string a[n+5];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
string lef=a[n/2-1];
string rit=a[n/2];
string ans;
int pos = 0,flag=0,l=min(lef.size(),rit.size());
while(1){
for(int i=0;i<26;i++){
string temp;
temp=ans;
temp+='A'+i;
if(temp<rit&&temp>=lef){
flag=1;
ans=temp;
break;
}
}
if(flag){
break;
}
ans+=lef[pos++];
}
// while(pos<l){
// if(pos==l-1){
// if(rit.size()<lef.size()){
// if(rit[pos]-1>lef[pos]){
// ans+=lef[pos]+1;
// }
// else{
// ans+=lef[pos];
// if(++pos==lef.size()-1){
// ans+=lef[pos];
// }
// else{
// ans+=lef[pos]+1;
// }
// ans=lef;
// }
// }
// else{
// ans=lef;
// }
// break;
// }
// if(lef[pos]<rit[pos]){
// ans+=lef[pos]+1;
// break;
// }
// ans+=lef[pos];
// pos++;
// }
cout<<ans<<endl;
}
}