题目描述
设有 n 个正整数 a 1 … a n a_1 \dots a_n a1…an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数
输入格式
第一行有一个整数,表示数字个数 n。
第二行有 n 个整数,表示给出的 n 个整数 a i a_i ai 。
输出格式
一个正整数,表示最大的整数
解题思路
对于这一题,我刚开始还是想老老实实用int或long做的,但是看了一位大佬的做法,用string做,就很自然的解决了数字连接的问题,所以果断string。
Talking is cheap,show you my code.
代码
#include<iostream>
#include<string>
using namespace std;
int main() {
string s[20];
int n;
cin >> n;
for (int i = 0;i < n;i++) {
cin >> s[i];
}
for (int i = 0;i < n;i++) {
for (int j = 0;j < (n - i-1);j++) {
string s1 = s[j] + s[j + 1];
string s2 = s[j + 1] + s[j];
if (s1 < s2) {
string t = s[j];
s[j] = s[j+1];
s[j+1] = t;
}
}
}
for (int i = 0;i < n;i++) {
cout << s[i];
}
cout << endl;
return 0;
}