不见旧时长安月 2022-03-19 09:06 采纳率: 66.7%
浏览 873
已结题

序列排序 对于给定的正整数序列,按照每个数的各位数和从大到小排序,各位数和相同的按照本身大小排序,大的在前,小的在后。

序列排序
对于给定的正整数序列,按照每个数的各位数和从大到小排序,各位数和相同的按照本身大小排序,大的在前,小的在后。

时间限制:1000
内存限制:65536
输入
第一行1个整数n,表示序列的大小。( 0 < n ≤ 1000) 第二行n个正整数,表示序列的每个数,每个数不大于100000000。
输出
输出按照题目要求排序后的序列
样例输入
6
17 26 9 13 88 10
样例输出
88 9 26 17 13 10

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-03-19 09:51
    关注

    分解出各位数并求和,形成新的数组,然后进行排序,同步对原数组调整顺序即可

    #include <iostream>
    using namespace std;
    
    int sum(int n)
    {
        int s = 0;
        while(n>0)
        {
            s+=n%10;
            n/=10;
        }
        return s;
    }
    int main()
    {
        int i,j,t,n,a[1000],b[1000];
        cin>>n;
        for(i=0;i<n;i++)
        {
            cin>>a[i];
            b[i] = sum(a[i]);
        }
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-i-1;j++)
            {
                if((b[j] < b[j+1]) || ((b[j] == b[j+1]) && (a[j] < a[j+1])))
                {
                    t = b[j];
                    b[j] = b[j+1];
                    b[j+1] = t;
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                }
            }
        }
        for(i=0;i<n;i++)
            cout<<a[i]<<" ";
        return 0;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 专家修改了标签 7月13日
  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?
  • ¥50 cocos2d-x lua 在mac上接入lua protobuf?