a1029384756mc666 2021-08-21 20:06 采纳率: 80%
浏览 109
已结题

关于#c++#的问题:拼接后最大的整数是:111010输入格式第一行一个整数n

设有n个整数(3≤n≤100),将这些整数拼接起来,可以形成一个最大的整数。
例如:n=3,三个整数分别为21 7 34, 拼接后最大的整数为: 73421
再比如:n=3,三个整数分别是1 10 110,拼接后最大的整数是:111010
输入格式
第一行一个整数n ,表示有n 个整数。
第二行n个整数,数与数之间用一个空格分隔。
输出格式
输出到屏幕 。一个拼接后的最大的整数。
样例输入
3
21 7 34
样例输出
73421

  • 写回答

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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月29日
  • 已采纳回答 8月21日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集