Description
Dr lee cuts a string S into N pieces,s[1],…,s[N].
Now, Dr lee gives you these N sub-strings: s[1],…s[N]. There might be several possibilities that the string S could be. For example, if Dr. lee gives you three sub-strings {“a”,“ab”,”ac”}, the string S could be “aabac”,”aacab”,”abaac”,…
Your task is to output the lexicographically smallest S.
Input
The first line of the input is a positive integer T. T is the number of the test cases followed.
The first line of each test case is a positive integer N (1 <=N<= 8 ) which represents the number of sub-strings. After that, N lines followed. The i-th line is the i-th sub-string s[i]. Assume that the length of each sub-string is positive and less than 100.
Output
The output of each test is the lexicographically smallest S. No redundant spaces are needed.
Sample Input
1 3 a ab ac
Sample Output
aabac
水题,做一个比较就可以了。比较A+B和B+A
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 bool cmp (string a, string b) { 7 return a + b > b + a; 8 } 9 int main() { 10 int t; 11 cin >> t; 12 while (t--) { 13 int n; 14 string a; 15 vector<string> q; 16 cin >> n; 17 while (n--) { 18 cin >> a; 19 q.push_back(a); 20 } 21 sort(q.begin(), q.end(), cmp); 22 while (!q.empty()) { 23 cout << q.back(); 24 q.pop_back(); 25 } 26 cout << endl; 27 } 28 return 0; 29 }