首页 > 其他 > 详细

UVa 1610 - Party Games

时间:2018-01-21 00:32:38      阅读:211      评论:0      收藏:0      [点我收藏+]

链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4485

 

题意:

输入一个n(2≤n≤1000,n是偶数)个字符串的集合D,找一个长度最短的字符串(不一定在D中出现)S,
使得D中恰好一半串小于等于S,另一半串大于S。如果有多解,输出字典序最小的解。
例如,对于{JOSEPHINE, JERRY},输出JF;对于{FRED, FREDDIE},输出FRED。

 

分析:

细节处理一下即可。
本题容易想复杂,或者把细节想错。我看到网上很多人的代码都比较复杂,其实不用那么复杂。。。

 

代码:

 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 int main(){
 7     int n;
 8     string s[1000+5];
 9     while(cin >> n && n){
10         for(int i = 0; i < n; i++) cin >> s[i];
11         sort(s, s + n);
12 
13         string f = s[n/2-1], b = s[n/2], j;
14         for(int i = 0; f[i]; i++){
15             j += f[i];
16             if(f <= j && j < b) break;
17             if(j[i] < Z){
18                 j[i]++;
19                 if(b > j) break;
20                 else j[i]--;
21             }
22         }
23         cout << j << endl;
24     }
25     return 0;
26 }

 

UVa 1610 - Party Games

原文:https://www.cnblogs.com/hkxy125/p/8322403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!