UVa 1610 - Party Games
阿新 • • 發佈:2018-01-21
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