Substring
Time limit: 1 second(s) Memory limit: 32768 KBytes
Total Submit : 1767 Accepted Submit : 548
Problem
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


// 1198Substring.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
void sub_sort(string a[8],int N)
{
string temp;
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++)
{// 判断字符串大小,(a[i]+a[j])>(a[j]+a[i])表示判断"b""ba"这类情况
if((a[i]+a[j])>(a[j]+a[i]))
{
temp = a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int T; //测试案例数目
cin >> T;
int N; //字符串个数
for(int i=0; i<T; i++)
{
cin >> N;
string s[8] ;
for(int j=0; j<N; j++)
{
cin>>s[j];
}
sub_sort(s,N);
for(int j=0; j<N; j++)
{
cout<<s[j];
}
cout<<endl;
}
return 0;
}