CCF认证 201312-1:出现次数最多的数(C++)

在这里插入图片描述

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=10000;
int main()
{
	int a[N];
	int i,n,num1;
	memset(a,0,sizeof(a));
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>num1;
		a[num1]++;
	}
	int num2,m=0;
	for(i=0;i<N;i++)
	if(a[i]>m)
	{
		m=a[i];
		num2=i;
	}
	cout<<num2;
    return 0;
}

这道题目之前我是用一个数组存输入的n个数字,然后再进行循环找出现次数最多的那个数。但是那样太复杂,所以就进行修改,设一个数组,读入某个数字num1,那么就让a[num1]++,这样不仅存住了相同数组的次数,而且数组索引本身也是这个数字的值(num1)。
再进行第二次循环,该循环要找到出现次数最多的数字,那么就从第一个开始找,条件a[i]>m。这种方法还使得当有两个数字出现的次数是一样多的时候,num2是比较小的数。
memset函数

发布了61 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44652687/article/details/104709569
今日推荐