首页 > 代码库 > 【sicily系列】 1198 substring

【sicily系列】 1198 substring

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
13aabac
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 }                                 
View Code

 

【sicily系列】 1198 substring