C++初学者,自己想的,可能有点复杂
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n]; //构造一个一维数组存放这些数据
for(int i=0;i<n;i++)
{cin>>a[i];}
int max=a[0];
for(int i=1;i<n;i++)
{
if(a[i]>max)
{max=a[i];} //找到这组数据数据中最大的一个
}
int b[max+1]; //构造一个新的数组,下标为0~max
for(int j=0;j<=max;j++)
{b[j]=0;} //让这个新数组里的数全为0
for(int i=0;i<n;i++)
{
for(int j=0;j<=max;j++)
{
if(a[i]==j) //当a数组里的数字与b数组的下标相同时
{b[j]++;} //此步说明a数组里有几个相同的同为j的数
}
}
//下面开始寻找b数组中最大的数,即a数组中出现次数最多的
int bmax=b[0];
int x;
for(int j=1;j<=max;j++)
{ //按从小到大的顺序遍历,当有两个数相同时,也会取小的那一个
if(b[j]>bmax)
{
bmax=b[j];
x=j; //注意数组对应的下角标j才是a数组里的数
}
}
cout<<x<<endl;
return 0;
}
本文展示了一个C++程序,用于从输入的整数数组中找出出现频率最高的元素。通过两次遍历,首先找到数组中的最大值,然后构建一个计数数组来跟踪每个元素的出现次数,最后再次遍历计数数组以确定出现次数最多的元素。

被折叠的 条评论
为什么被折叠?



