UVA-1610 Party Games (构造)
题目大意:给出一系列字符串,构造出一个字符串大于等于其中的一半,小于另一半。
题目分析:取大小为中间的两个a,b(a<b)。实际上就是找出第一个小于b的同时大于等于a的字符串,直接构造即可。要注意细节。
代码如下:
# include<iostream>
# include<cstdio>
# include<string>
# include<cstring>
# include<algorithm>
using namespace std;
string p[1001];
string solve(int n)
{
string a=p[n/2-1],b=p[n/2];
int la=a.size();
string ans="";
ans+='A';
int i=0;
while(i<la){
while(ans[i]<='Z'&&ans<a) ++ans[i];
if(ans[i]<='Z'&&ans>=a&&ans<b) return ans;
if(a[i]!=ans[i]) --ans[i];
ans+='A';
++i;
}
}
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
for(int i=0;i<n;++i)
cin>>p[i];
sort(p,p+n);
cout<<solve(n)<<endl;
}
return 0;
}


浙公网安备 33010602011771号