数串

题目描述

设有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<stdio.h>
 2 #include<iostream>
 3 #include<string>
 4 #include<sstream>
 5 #define N 100
 6 using namespace std;
 7 string ts(int n)
 8 {
 9     ostringstream stream;
10     stream<<n;  //n为int类型
11     return stream.str();
12 }
13 bool cmp(string s1,string s2)
14 {
15     string str1=s1+s2;
16     string str2=s2+s1;
17     if(str1>str2)
18         return 1;
19     else
20         return 0;
21 }
22 int main()
23 {
24     int n;
25     int a[N];
26     while(scanf("%d",&n)!=EOF)
27     {
28         string s="";
29         for(int i=0;i<n;i++)
30         {
31             scanf("%d",&a[i]);
32         }
33         for(int i=0;i<n;i++)
34         {
35             for(int j=0;j<n-i-1;j++)
36             {
37                 if(cmp(ts(a[j]),ts(a[j+1])))
38                 {
39                     int temp=a[j+1];
40                     a[j+1]=a[j];
41                     a[j]=temp;
42                 }
43             }
44         }
45         for(int i=n-1;i>=0;i--)
46         {
47             s+=ts(a[i]);
48         }
49         cout<<s<<endl;
50     }
51     return 0;
52 }

 

posted @ 2018-04-08 22:26  小花同学  阅读(132)  评论(0编辑  收藏  举报