解题思路:与1558类似。
每种众数都对应有其重数,所以可定义一个结构体:包含众数和对应的重数。在程序中输入自然数,然后与结构体数组(众数表)中的众数比较是否有相应的众数,如果有,则重数加1,如果没有,则把输入的颜色加到众数表中,并设置重数为1。
选出重数最多的,然后存放到另一个数组中,再按众数排序找到最小即可输出。
参考代码:
#include<bits/stdc++.h> using namespace std; typedef struct { int num; //众数 int count; //众数num的重数 }Number; Number a[50000],b[50000]; int cmp(Number a,Number b) { return (a.num<b.num); } int main() { int i,j,n,x,k=0; int max=1; cin>>n; while(n--) { cin>>x; for(i=0;i<k;i++) //在众数数组中查找有没有x { if(x==a[i].num) //找到,则重数加1 { a[i].count++; if(max<a[i].count) max=a[i].count; break; } } if(i==k) //没有找到把x作为新的众数放到数组中,同时设置重数为1 { a[k].num=x; a[k].count=1; k++; //众数个数加1 } } for(i=0,j=0;i<k;i++) //把重数最大的找出来,并保存到数组b中 { if(a[i].count==max) { b[j].num=a[i].num; b[j].count=a[i].count; j++; } } sort(b,b+j,cmp); // 排序 cout<<b[0].num<<endl; //输出最大重数对应的最小众数 cout<<b[0].count<<endl; return 0; }
0.0分
2 人评分
2005年春浙江省计算机等级考试二级C 编程题(3) (C语言代码)浏览:417 |
简单的a+b (C语言代码)浏览:601 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1072 |
兰顿蚂蚁 (C++代码)浏览:1160 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:934 |
数对 (C语言代码)浏览:762 |
数字游戏 (C++代码)浏览:1240 |
A+B for Input-Output Practice (I) (C语言代码)浏览:599 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:828 |
【计算两点间的距离】 (C语言代码)浏览:875 |