1. 程式人生 > >UVa 1610 - Party Games

UVa 1610 - Party Games

main 代碼 end index 大於 soft str time pos

鏈接:

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