这题主要要注意细节问题,特别是排序后a[n/2]的长度>a[n/2+1]的情况和有后面有Z的情况
下面给个用来调试的样例:
INPUT:
2
ABC
ABB
2
ABC
ABBA
2
ABC
ABBZAB
2
ABBZZA
ABC
0
OUTPUT:ABB
ABBA
ABBZB
ABBZZA
//紫书P253聚会游戏//Serene#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<string>#include<cstdio>#include<cmath>using namespace std;const int maxn=1000+10;int n;string a[maxn],hh;int main() { scanf("%d",&n);getline(cin,hh); bool fl=0; string l,r;int pos,minsize; while(n) { for(int i=1;i<=n;++i) getline(cin,a[i]); sort(a+1,a+n+1);fl=0; l=a[n/2];r=a[n/2+1]; pos=0;minsize=min(l.size(),r.size()); while(l[pos]==r[pos]&&pos<minsize) { PRintf("%c",l[pos]); pos++; } if(pos>=l.size()-1) { if(pos==l.size()-1)printf("%c",l[pos]); printf("/n"); scanf("%d",&n); getline(cin,hh);continue; } if(pos==r.size()-1&&l[pos]==r[pos]-1) { printf("%c",l[pos]);//l的pos这一位+1就和r一样了 pos++; } for(pos;pos<l.size()-1;pos++) if(l[pos]!='Z'){ printf("%c",l[pos]+1); fl=1;break; } else printf("Z"); if(!fl) printf("%c",l[l.size()-1]); printf("/n"); scanf("%d",&n);getline(cin,hh); } return 0;}
新闻热点
疑难解答