数串

题目描述

设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。

输入描述:

有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。

输出描述:

每组数据输出一个表示最大的整数。
示例1

输入

2
12 123
4
7 13 4 246

输出

12312
7424613
 1 #include<iostream>
 2 #include<vector>
 3 #include<string>
 4 #include<algorithm>
 5 #include<sstream>
 6 using namespace std;
 7 
 8 bool cmp(string str1, string str2)
 9 {
10     string str = str1 + str2;
11     string sss = str2 + str1;
12     return str > sss;
13 }
14 int main()
15 {
16     int N;
17     while (cin>>N)
18     {
19         vector<int> vet(N, 0);
20         vector<string> str;
21         for (int i = 0; i < N; i++)
22         {
23             cin >> vet[i];
24             str.push_back(to_string(vet[i]));
25         }
26         sort(str.begin(), str.end(), cmp);
27         string str1="";
28         for (int i = 0; i < N; i++)
29         {
30             str1+=str[i];
31         }
32         //int num;
33         //stringstream ss(str1);
34         //ss >> num;
35             cout << str1<< endl;
36 
37     }
38     system("pause");
39     return 0;
40 }
原文地址:https://www.cnblogs.com/wujufengyun/p/7478590.html