• CCF-201503-2-数字排序


    问题描述

    试题编号: 201503-2
    试题名称: 数字排序
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
    输入格式
      输入的第一行包含一个整数n,表示给定数字的个数。
      第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
    输出格式
      输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
    样例输入
    12
    5 2 3 3 1 3 4 2 5 2 3 5
    样例输出
    3 4
    2 3
    5 3
    1 1
    4 1
    评测用例规模与约定
      1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。
    解题思路:

    按照桶排序的思想,开好多个结构体的桶,再按照结构体的关键字排序,外层从大到小,内层从小到大

    因为sort没有确定好,结果得了一个70,索性改成最大才1005,不会超时的,得分100




    源代码:

    <span style="font-size:18px;">#include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<stack>
    #include<queue>
    #include<vector>
    #include<deque>
    #include<map>
    #include<set>
    #include<algorithm>
    #include<string>
    #include<iomanip>
    #include<cstdlib>
    #include<cmath>
    #include<sstream>
    #include<ctime>
    using namespace std;
    
    typedef long long ll;
    
    struct node
    {
        int number;
        int cnt;
    }ans[1005];
    
    bool cmp(node a, node b)
    {
        if(a.cnt>b.cnt)
            return 1;
        else if(a.cnt<b.cnt)
            return 0;
        else
        {
            if(a.number<b.number)
                return 1;
            else
                return 0;
        }
        return 0;
    }
    
    void init()
    {
        for(int i=0;i<=1000;i++)
        {
            ans[i].number=i;
            ans[i].cnt=0;
        }
    }
    int main()
    {
        int n;
        int num;
        init();
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&num);
            ans[num].cnt++;
        }
        sort(ans,ans+1005,cmp);
        for(int i=0;i<=1000;i++)
        {
            if(ans[i].cnt==0)
            {
                break;
            }
            else
            {
                printf("%d %d
    ",ans[i].number,ans[i].cnt);
            }
        }
    	return 0;
    }
    </span>


  • 相关阅读:
    ios专题 - OCUnit
    ios专题 - APP设计流程
    ios专题 - openSSL
    iOS开发获取缓存文件的大小并清除缓存
    支付宝“订单交易失败 ALI64” 报错的原因
    先登录 在跳转到tabBar
    首页 导航栏隐藏 下一级页面显示,pop回来遇到的问题
    invalid nib registered for identifier (重用符)
    iOS开发集成微信支付
    NSdata 与 NSString,Byte数组,UIImage 的相互转换
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7776072.html
Copyright © 2020-2023  润新知