zoukankan      html  css  js  c++  java
  • C语言拯救计划Day4-5之求整数序列中出现次数最多的数

    本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

    输入格式:

    输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。

    输出格式:

    在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

    输入样例:

    10 3 2 -1 5 3 4 3 0 3 2
    
     

    输出样例:

    3 4

     1 #include<stdio.h>
     2 #define N 1000
     3 //思路:使用两个数组,a[i] b[i],a[i]保存数据,b[i]保存每个数据出现的次数
     4 //      然后找到出现次数最多的b[i],并且记录下其下标i,从而找到最大次数对应的数字。
     5 int main()
     6 {
     7     int i, j, n;
     8     int a[N];
     9     int b[N] = {0};
    10     int max;
    11     int index = 0;
    12     scanf("%d", &n);
    13     for (i = 0; i < n; i++)
    14     {
    15         scanf("%d", &a[i]); 
    16     }
    17   ///用双循环拿a[i]元素和a数组的每一个数比较(包括a[i]本身)
    18     for (i = 0; i < n; i++) //记录每个数字出现的次数,每个数字至少出现一次,使用数组b[i]保存下来次数。
    19     {
    20         for (j = 0; j < n; j++)
    21         {
    22             if (a[i] == a[j])
    23             {
    24                 b[i]++;//表示第i个元素出现的次数
    25             }
    26         }
    27     }
    28     max = b[0];
    29     for (i = 1; i < n; i++) //查找最大的次数,记住最大次数的下标,使用该下标找到出现次数最大的数字。
    30     {
    31         if (max < b[i])
    32         {
    33             max = b[i];
    34             index = i;
    35         }
    36     }
    37     printf("%d %d
    ",a[index], max);///输出出现最多的数和次数
    38     return 0;
    39 }

    思路和之前有两道题很类似,做法也很经典的,经常会用到的
    注意点:
    如何统计每个数的出现次数并找到最大出现次数?
      1.开一个和a一样大的数组用来记录次数,通过一个双重循环(相当于复制了一遍a数组),将a数组中的每一个数字和复制的a数组的数依次比较,如果遇到相同的 则次数加1
    这样就可以统计第i个数出现的次数是多少
    2.最大次数--类似求数组中最大值的做法
    先假设最大值下标为0,然后用循环if语句找出b数组中的最大值,找出最大值的下标赋值于index

  • 相关阅读:
    WebPlayer9电影整站系统第三方电影批量添加工具
    Delphi执行SQL提示“不正常地定义参数对象”,“提供了不一致或不完整的信息”错误
    IIS控制大全
    Redis慢查询日志
    Redis短结构
    分布式AKF拆分原则
    Redis分片
    Redis的bitmap从基础到业务
    什么是CAP?
    Redis面试题
  • 原文地址:https://www.cnblogs.com/noobchen/p/12788076.html
Copyright © 2011-2022 走看看