zoukankan      html  css  js  c++  java
  • 数字排序 201503-2

    问题描述
      给定 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的非负整数。


    参考代码:

    #include <iostream>
    using namespace std;
    struct num{
    int s;
    int times = 1;
    };//数字的结构体
    int main(){
    int n;
    cin >> n;
    num *t = new num[n];
    for (int i = 0; i < n; i++)
    {
    cin >> t[i].s;
    }
    //对数组数字的大小进行排序
    num temp;
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < n - 1; j++)
    {
    if (t[j].s>t[j + 1].s)
    {
    temp = t[j];
    t[j] = t[j + 1];
    t[j + 1] = temp;
    }
    }
    }
    //找到相同数字的改变次数,并留下一个表示次数,其余次数置为0
    int x = 1;
    for (int i = 1; i < n; i++)
    {
    if (t[i].s == t[i - 1].s){
    x++;
    t[i - 1].times = 0;
    }
    else{
    t[i - 1].times = x;
    x = 1;
    }
    }
    //判断最后一个数
    if (x != 1){
    t[n - 1].times = x;
    }
    //对数组次数进行冒泡排序
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < n - 1; j++)
    {
    if (t[j].times<t[j + 1].times)
    {
    temp = t[j];
    t[j] = t[j + 1];
    t[j + 1] = temp;
    }
    }
    }
    //输出结果
    for (int i = 0; i < n; i++){
    if (t[i].times!=0){
    cout << t[i].s << " " << t[i].times << endl;
    }
    }
    return 0;
    }

    提交结果:

    代码长度编程语言评测结果得分时间使用空间使用
    880B C++ 正确 100 31ms 504.0KB


  • 相关阅读:
    编程风格与注意事项(一)
    BB-Black 初体验之远程控制篇
    我的BB-Black之旅……(一)
    等精度频率计设计中的猫腻
    Linux查看物理CPU个数、核数、逻辑CPU个数、Cpu型号
    基于TransportClient的elasticsearch(es)消费kafka数据---Java程序设计
    elasticsearch概述
    HBase 性能优化笔记
    hive1.2.1搭建遇到的问题
    Hbase的表设计
  • 原文地址:https://www.cnblogs.com/bao-ZhangJiao/p/14268809.html
Copyright © 2011-2022 走看看