蓝桥杯算法训练 出现次数最多的整数、
很简单,但有一个坑点,题目说了n是大于0且不超过20的整数;
但它的第六、七组数据n<0 n>20;所以加个判断就能过了;
下面是两种方法;
#include<iostream> #include<map> using namespace std; int main() { int n;cin >> n; if(n>0&&n<=20) { map<int,int>p; int m; for(int i=0;i<n;++i){ cin >> m; p[m]++; } map<int,int>::iterator it; it=p.begin(); int max=(*it).first; for(it=p.begin();it!=p.end();++it){ if((*it).second>p[max]) max=(*it).first; } cout << max << endl; } }
下面的方法就比较直接了
1 #include<iostream> 2 #include<map> 3 using namespace std; 4 long long num[25]; 5 int main() 6 { 7 int n,m; 8 cin >> n; 9 if(n>0&&n<21) 10 { 11 for(int i=0;i<n;++i) 12 cin >> num[i]; 13 int count=0,p; 14 int max=num[0],mmax=1; 15 for(int i=0;i<n;++i){ 16 if(p!=num[i]){ 17 count=0;p=num[i];++count; 18 } 19 else 20 ++count; 21 if(count>mmax){ 22 max=p;mmax=count; 23 } 24 } 25 cout << max << endl; 26 } 27 28 }