zoukankan      html  css  js  c++  java
  • 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>


  • 相关阅读:
    [luogu p2482] [SDOI2010]猪国杀
    [luogu p2296] 寻找道路
    左右布局(备用复制)
    导出Excel
    流式布局 及 媒体查询
    echarts设置(持续更新)
    解决Vue中watch首次进入路由不触发的问题
    Math.random
    Vue的拖拽
    使的dialog上下左右居中(弹框居中)
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7776072.html
Copyright © 2011-2022 走看看