
设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。
例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213
又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613
题目
- 原题地址:拼数
- 题目编号:NC16783
- 题目类型:贪心
- 时间限制:C/C++ 1秒,其他语言2秒
- 空间限制:C/C++ 262144K,其他语言524288K
1.题目大意
2.题目分析
- 按照字典序排序即可,但是需要注意比较函数的写法
- 如果直接比较
2
和21
,得到的结果是212
(21
>2
),但是期望的结果是221
- 所以在比较两个字符串谁在前的时候,应该确保用来比较的字符串长度相同,详见代码
3.题目代码
#include <bits/stdc++.h>
using namespace std;
bool cmp(string a, string b)
{
string s1 = a + b;
string s2 = b + a;
return s1 > s2;
}
int main() {
int n;
cin >> n;
string s[n];
for(int i=0;i<n;i++)
cin >> s[i];
sort(s, s+n,cmp);
for(int i=0;i<n;i++)
cout << s[i];
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)