[关闭]
@DingCao-HJJ 2015-09-29T16:38:22.000000Z 字数 1480 阅读 1145

sicily_1198 Substring

sicily


题目

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

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

思路

利用c++的比较操作符来判断两个字符串谁前谁后,笔者采用的是类似选择的算法,通过比较两个字符串顺序和逆序的和来判断是否要换位。
例如,"ac"+"ab" > "ab"+"ac", 换位,从而得出字典序。

代码

  1. // 1198.cpp: http://soj.sysu.edu.cn/1198
  2. // compare sub[i][j] and sub[j][i] to get the lexicographically smallest string
  3. // Copyright (c) 2014 Junjie_Huang@SYSU(SNO:13331087). All Rights Reserved.
  4. #include <iostream>
  5. #include <string>
  6. using std::cin;
  7. using std::cout;
  8. using std::endl;
  9. using std::string;
  10. void subStringsSort(int N, string sub[8]) {
  11. for (int i = 0; i < N; i++) {
  12. for (int j = i + 1; j < N; j++) {
  13. if (sub[i] + sub[j] > sub[j] + sub[i]) {
  14. string temp = sub[i];
  15. sub[i] = sub[j];
  16. sub[j] = temp;
  17. }
  18. }
  19. }
  20. }
  21. int main() {
  22. int T;
  23. cin >> T;
  24. while (T--) {
  25. int N;
  26. string sub[8];
  27. cin >> N;
  28. for (int i = 0; i < N; i++) cin >> sub[i];
  29. subStringsSort(N, sub);
  30. for (int i = 0; i < N; i++) cout << sub[i];
  31. cout << endl;
  32. }
  33. return 0;
  34. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注