洛谷刷题11:拼数(P1012)
题目描述
设有 n 个正整数 ,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。
输入格式
第一行有一个整数,表示数字个数 n。
第二行有 n个整数,表示给出的 n个整数 a[i]。
输出格式
一个正整数,表示最大的整数
输入输出样例
输入 #1
3
13 312 343
输出 #1
34331213
输入 #2
4
7 13 4 246
输出 #2
7424613
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<math.h>
#include<cstring>
#include<cstdio>
#include<cctype>
using namespace std;
string a[1000];
bool cmp(string a, string b)
{
return a + b > b + a;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a+1, a + n+1, cmp);
for (int i = 1; i <= n; i++)
a[0] += a[i];
cout << a[0];
}
自己写的cmp函数中,a+b>b+a是精髓