内存限制:64 MB 时间限制:1.000 S
好久不看博客了,上回说讲字符串的,对吧?今天说到做到,来了啊!
题目描述
设有n个整数(3≤n≤100),将这些整数拼接起来,可以形成一个最大的整数。
例如:n=3,三个整数分别为21 7 34, 拼接后最大的整数为: 73421
再比如:n=3,三个整数分别是1 10 110,拼接后最大的整数是:111010
输入
第一行一个整数n ,表示有n 个整数。
第二行n个整数,数与数之间用一个空格分隔。
输出
输出到屏幕 。一个拼接后的最大的整数。
样例输入
3
21 7 34
样例输出
73421
显然,这道题是一个字符串的题,也是一个结构体的题 ,那么怎么做呢?
给大家一个排序规则,看看大家还做得出来吗?
x.num + y.num > y.num + x.num;
没思路的同学看看源代码(严禁直接复制!)
#include <bits/stdc++.h>
using namespace std;
struct node{
string num;
int len;
}a[101];
bool cmp(node x, node y) {
return x.num + y.num > y.num + x.num;
}
int main() {
int n,s[101];
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].num;
a[i].len=a[i].num.size();
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].num;
}
return 0;
}