题目描述
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
输入输出格式
输入格式:
第一行,一个正整数n。
第二行,n个正整数。
输出格式:
一个正整数,表示最大的整数
输入输出样例
输出样例#1:
P1012
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 }