CCF201312-1 出现次数最多的数
题目:
题目分析:
统计出现次数最多的数:
方法一:
解此题可以使用一个大数组,输入数字的大小为数组下标,最后遍历数组即可得到答案。
代码如下:
#include<iostream>
using namespace std;
int a[10010],n,q,Max;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>q;
a[q]++; //输入的数作为数组下标,统计+1
}
for(int i=0;i<10005;i++)
if(a[Max]<a[i])Max=i;//遍历数组,找到第一个出现次数最多的数
cout<<Max<<endl; //输出
return 0;
}
方法二:此方法只是使用数组较小,并不提倡
1.创建数据结构:
struct node{
int time,value;//time存储该数出现次数,value存储其值
}a[1010];
2.对输入后结点信息排序,输出a[0].value即可。
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int time,value;//time存储该数出现次数,value存储其值
}a[1010];
int cmp(node i,node j){ //排序标准
if(i.time==j.time)return i.value<j.value;
return i.time>j.time;
}
int n,q,Max;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>q; //输入
int flag=0;
for(int j=0;j<1001;j++){ //查找是否已出现
if(a[j].value==q){
a[j].time++; //统计出现次数
flag=1; //标志已出现
}
}
if(flag==0)a[i].value=q; //没有出现则新开一个a[i]
}
sort(a,a+n,cmp); //排序
cout<<a[0].value<<endl; //输出
return 0;
}