问题描述
编写一个程序, 读入一组整数, 这组整数是按照从小到大的顺序排列的, 它们的个数 N 也是由用户输入的, 最多不会超过 20. 然后程序将对这个数组进行统计, 把出现次数最多的那个数组元素值打印出来. 如果有两个元素值出现的次数相同, 即并列第一, 那么只打印比较小的那个值.
输入格式: 第一行是一个整数 N,N? £? 20; 接下来有 N 行, 每一行表示一个整数, 并且按照从小到大的顺序排列.
输出格式: 输出只有一行, 即出现次数最多的那个元素值.
输入输出样例
样例输入
- 5
- 100
- 150
- 150
- 200
- 250
样例输出
150
有点坑需要特判一下 n<=0 return
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int n;
- int a[100];
- int dp[1000005];
- int main()
- {
- while(cin>>n){
- if(n<=0) return 0;
- for(int i=0;i<n;i++){
- cin>>a[i];
- }
- sort(a,a+n);
- int t=1,maxn=1,maxi=0;
- for(int i=1;i<n;i++){
- if(a[i]==a[i-1]){
- t++;
- if(t>maxn){
- maxn=t;
- maxi=i;
- }
- }else{
- t=1;
- }
- }
- cout<<a[maxi]<<endl;
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2996323.html