作者:xq的acm之路
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4485
题目大意:给出n个字符串,求一个字符串,这个字符串比n中的一半的字典序小,大于等于另一半。n为偶数
思路:排序,然后一个个字符的比较就行,,,
刚开始用if讨论情况,漏了几种情况,后来直接每增添一个字符就比较一下,,这样不容易漏情况。。。
代码如下:
#include <iostream> #include <algorithm> #include <string> #include <cstdio> using namespace std; string a[1001]; char ans[1001]; string solve(int n) { string x=a[(n-2)/2]; string y=a[n/2]; string ans=""; ans+='A'; int lx=x.size(),i=0; while(i<lx) { while(ans[i]<='Z'&&ans<x) ++ans[i]; if(ans[i]<='Z'&&ans>=x&&ans<y) return ans; if(x[i]!=ans[i]) --ans[i]; ans+='A'; ++i; } } int main() { int n; while(cin>>n&&n) { for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); string ans=solve(n); cout<<ans; cout<<endl; } return 0; }