题解
2025-05-04 11:50:21
发布于:浙江
3阅读
0回复
0点赞
思路:本题让我们组成最大数。我们可以想一下怎样才能使组成的数最大:第一,位数要最大。而题目给定好了,可以不用管。第二,最高位上的数最大。本题不能拆分数字,所以我们只要把首位数字最大的那个数放在最前边即可。第三,后续的数位也要尽可能的大。动动脑子就可以想到:这个类似字典序。所以我们可以创建一个字符串数组,用字符串的形式存储数,之后用sort按字典序排序。注意要按降序排列。你可以用sort的第三个参数。但是我比较懒,直接升序排+逆序输出。
代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
string a[110]={};
for(int i=1;i<=n;i++){
cin >> a[i];
}sort(a+1,a+n+1);
for(int i=n;i>0;i--){
cout << a[i];
}
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个