- 题目描述:
-
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 输入:
-
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,其中每个正整数不超过10000000。
- 输出:
-
对应每个测试案例,
输出m个数字能排成的最小数字。
- 样例输入:
-
3 23 13 6 2 23456 56
- 样例输出:
-
13236 2345656
1 #include <cstdio> 2 #include <iostream> 3 #include <string> 4 #include <vector> 5 #include <algorithm> 6 using namespace std; 7 8 bool cmp(string s1, string s2) 9 { 10 string num1 = s1 + s2; 11 string num2 = s2 + s1; 12 return num1 < num2; 13 } 14 15 int main() 16 { 17 //freopen("input.txt", "r", stdin); 18 int m; 19 vector<string> v; 20 while (cin >> m) { 21 v.resize(m); 22 for (int i = 0; i < m; i++) { 23 cin >> v[i]; 24 } 25 sort(v.begin(), v.end(), cmp); 26 for (int i = 0; i < v.size(); i++) { 27 cout << v[i]; 28 } 29 cout << endl; 30 } 31 return 0; 32 } 33 /************************************************************** 34 Problem: 1504 35 User: hupo250 36 Language: C++ 37 Result: Accepted 38 Time:230 ms 39 Memory:1528 kb 40 ****************************************************************/