P1012 拼数

题目描述

设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。

例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213

又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

输入输出格式

输入格式:

第一行,一个正整数n。

第二行,n个正整数。

输出格式:

一个正整数,表示最大的整数

扫描二维码关注公众号,回复: 848794 查看本文章

输入输出样例

输入样例#1: 
3
13 312 343
输出样例#1: 
34331213

其实是一道很简单的字符串题,没有任何思维含量。但因为平时很少做字符串的题,所以对于string的用法很不熟悉,导致卡了好半天。
这里记下3点:1.使用string类型需要加上#include <string>这个头文件(前面没有'c')
       2.string类型可以直接比大小。比大小的方式与整型不同,是从左往右(即从最高位)开始比起。
       3.string类型字符串可以直接加和,并且没有交换律(也就是说s[i]+s[j]和s[j]+s[i]结果不同)。
 1 #include <iostream>
 2 #include <cmath>
 3 #include <string>
 4 #include <cstring>
 5 #include <cstdio>
 6 #include <cstdlib>
 7 #include <algorithm>
 8 using namespace std;
 9 string s[25];
10 int main()
11 {
12     int n;
13     scanf("%d",&n);
14     for(int i=1;i<=n;i++) cin>>s[i];
15     for(int i=1;i<n;i++)
16     {
17         for(int j=i+1;j<=n;j++)
18         {
19             string s1=s[i]+s[j],s2=s[j]+s[i];
20             if(s1<s2)
21             {
22                 string ss;
23                 ss=s[i];
24                 s[i]=s[j];
25                 s[j]=ss;
26             }
27         }
28     }
29     for(int i=1;i<=n;i++) cout<<s[i];
30     system("pause");
31     return 0;    
32 }
P1012

猜你喜欢

转载自www.cnblogs.com/lulala/p/9038221.html