好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

算法训练 出现次数最多的整数

问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数 N , N  £ 20;接下来有 N 行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例

样例输入

5
100
150
150
200
250

样例输出

150

 

注意:

1.n的可能取值在整数范围内,存在<=0的情况

2.注意最后一个元素的判断

 

#include<cstring> 
#include <algorithm> 
#include <cstdio> 
#include <iostream>
 using   namespace   std;
  int  main( void  ){
      long   long  n,data,count= 1 ,a[ 21 ],count_max= 0  ;
    cin  >>  n;
      if (n <=  0 )  return   0  ;
      for ( int  i= 1 ;i<=n;i++ ){
        cin  >>  a[i];
    }
    data  = a[ 1  ];
    count  =  1  ;
      for ( int  i= 2 ;i<=n;i++ ){
          if (a[i] != a[i- 1  ]){
              if (count_max <  count){
                count_max  =  count;
                data  = a[i- 1  ];
            }
            count  =  1  ;
        }  else  count++ ;
          if (i ==  n){
              if (count_max <  count){
                count_max  =  count;
                data  =  a[n]; 
            }
        }
    }
    cout  <<  data;
      return   0  ;
}  

 

查看更多关于算法训练 出现次数最多的整数的详细内容...

  阅读:43次

上一篇: 国密SM4算法

下一篇:算法提高 矩阵乘法