试题 算法训练 出现次数最多的整数(C++)

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

满分代码如下:

#include<iostream>
using namespace std;
int main(){
    int i,j,n,max=0;
    cin>>n;
    if(n<=0){
        return 0;
    }else{
        int a[n+8],b[n+8];
        for(i=0;i<n;i++){
            cin>>a[i];
            b[i]=0;
        }
        int max_=a[0];
        for(i=0;i<n-1;i++){
            for(j=i+1;j<n;j++){
                if(a[i]==a[j]){
                    b[i]++;
                    if(b[i]>max){
                        max=b[i];
                        max_=a[i];
                    }
                    if(b[i]==max){
                        if(max_>a[i]){
                            max_=a[i];
                        }
                    }
                }
            }
        }
        cout<<max_<<endl;
    }
    return 0;
}

注意考虑n<0的情况。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容