CCF计算机软件能力认证 201312-1 出现次数最多的数
题目
给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式:
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式:
输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
样例输入:
6 10 1 10 20 30 20
样例输出:
10
题解
非正规思路
使用数组存储这n个数及其出现次数,其中,数组下标为数的数值,数组的值为数出现的次数。第一次循环将数值和次数存储进数组中,第二次循环遍历该数组得出出现次数最多的数,同时由于该数组为有序存储的,所以第一次遍历得到的出现次数最多的数也是数值最小的数,符合题目条件。
挫挫的代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10001;
int main(){
int n, a;
while(scanf("%d", &n)!=EOF){
int arr[maxn]={0}, ans=0;
for(int i=0;i<n;i++){
cin>>a;
arr[a]++;
}
for(int i=1;i<maxn;i++){
if(arr[i]>arr[ans]){
ans = i;
}
}
cout<<ans<<endl;
}
return 0;
}
絮絮叨叨
菜啊……
参考博客
https://www.cnblogs.com/codeyuan/p/4374621.html
|