设有n个整数(3≤n≤100),将这些整数拼接起来,可以形成一个最大的整数。
例如:n=3,三个整数分别为21 7 34, 拼接后最大的整数为: 73421
再比如:n=3,三个整数分别是1 10 110,拼接后最大的整数是:111010
输入格式
第一行一个整数n ,表示有n 个整数。
第二行n个整数,数与数之间用一个空格分隔。
输出格式
输出到屏幕 。一个拼接后的最大的整数。
样例输入
3
21 7 34
样例输出
73421
关于#c++#的问题:拼接后最大的整数是:111010输入格式第一行一个整数n
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- StjpStjp 2021-08-21 20:13关注
#include <iostream> #include <cstdlib> #include <cmath> #include <bits/stdc++.h> using namespace std; //int 转string string intToString(int num) { char p[255]; sprintf(p, "%d", num); string s(p); return s; } //string转int int stringToint(const string&s) { return atoi(s.c_str()); } //多个数组合合并为最大数,注意要将数组长度传入,在函数内部数组参数会转为指针,从而求不出长度 void composeBiggest(int num[], int len) { int tempNum; string temp1, temp2; for (int i = 0; i<len; i++) { for (int j = i + 1; j<len; j++) { temp1 = intToString(num[i]) + intToString(num[j]); temp2 = intToString(num[j]) + intToString(num[i]); if (stringToint(temp1) - stringToint(temp2)<0) { tempNum = num[i]; num[i] = num[j]; num[j] = tempNum; } } } for (int i = 0; i<len; i++) { cout << num[i]; } } int main() { int a[110]; int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; composeBiggest(a, n); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
- ¥20 关于URL获取的参数,无法执行二选一查询
- ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
- ¥15 marlin编译错误,如何解决?
- ¥15 有偿四位数,节约算法和扫描算法
- ¥15 VUE项目怎么运行,系统打不开
- ¥50 pointpillars等目标检测算法怎么融合注意力机制
- ¥20 Vs code Mac系统 PHP Debug调试环境配置
- ¥60 大一项目课,微信小程序
- ¥15 求视频摘要youtube和ovp数据集