/*
大体思路是用string存储字符串,从小到大进行排序,因为n是偶数所以直接选出中间两个字符串left和right来计算结果。
从left的第一个元素开始,先把他+1,然后累加到ans中,如果此时ans小于right,那么ans一定是最优解,直接跳出循环输出结果。
如果ans大于或等于right,说明+1后ans大了,把他-1回到正常值,然后继续循环。。。。。。
然后要注意细节,首先+1时不能超过Z,然后注意处理最后一个元素,因为+1法对最后一个元素无效
最后庆幸没有空串
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<sstream>
using namespace std;
string a[
1005];
int main()
{
int n,i;
while(scanf(
"%d",&n)!=EOF&&
n)
{
for(
int i=
0;i<n;i++
)
{
cin>>
a[i];
}
sort(a,a+
n);
string left=a[n/
2-
1];
string right=a[n/
2];
int len=
left.size();
string ans;
for(
int i=
0;i<len;i++
)
{
if(left[i]+
1<=
'Z'&&i!=len-
1)
{
ans+=left[i]+
1;
if(ans<
right)
break;
ans[i]--
;
}
else
ans+=
left[i];
}
cout<<ans<<
endl;
}
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-511896.html