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

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

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

时间限制: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条)

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行