蓝桥杯——算法训练 出现次数最多的整数

来源:互联网 发布:网络授课怎么赚钱 编辑:程序博客网 时间:2024/06/03 15:44
<span style="font-family: 宋体, 'Times New Roman'; background-color: rgb(255, 255, 255);"> </span><span style="font-family: 宋体, 'Times New Roman'; box-sizing: border-box; margin: 0px; padding: 0px; background-color: rgb(255, 255, 255);">问题描述</span>
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数NN £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
想法
这题好毒,也是我没注意范围,测试的数据中有两组是n<0和n>20的数据,好阴险的题目,以后要注意加范围判断
代码
#include<stdio.h>#include<iostream>#include<vector>#include<string>#include<cstring>#include<algorithm>using namespace std;int main(){int data[30][2];int n=0;cin>>n;if(n>0&&n<=20){for(int i = 0;i<n;i++){cin>>data[i][0];int count=1;for(int j=0;j<i;j++){if(data[j][0]==data[i][0]){count++;}}data[i][1]=count;}int mode=data[0][0],num=1;for(int i=1;i<n;i++){if(num==data[i][1]){if(mode>data[i][0]){mode=data[i][0];}}else if(num<data[i][1]){mode=data[i][0];n=data[i][1];}}cout<<mode;}return 0;}


1 0
原创粉丝点击