1535 - 众数
时间限制 : 1 秒
内存限制 : 32 MB
输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。
题目输入
测试数据有多组,每组输入20个1-10之间的数。
题目输出
对于每组输入,请输出1-10中的众数。
<span style="font-size:larger;"><span style="font-family:宋体;">注意</span><span style="font-family:宋体;color:#333333;">如果存在一样多次数的众数,则输出权值较小的那一个。</span></span><span></span>
<br />
输入/输出样例
输入格式
8 9 6 4 6 3 10 4 7 4 2 9 1 6 5 6 2 2 3 8
输出格式
6
C语言解答
#include<stdio.h> int main() { int a[20],i,x,y; while(scanf("%d",&a[0])!=EOF) { x=0; int b[11]={0}; b[a[0]]++; for(i=1;i<20;i++) { scanf("%d",&a[i]); b[a[i]]++; } for(i=1;i<=10;i++) if(b[i]>x){x=b[i];y=i;} printf("%d\n",y); } return 0; }
C++解答
#include<stdio.h> #include<string.h> int main() { int x,i,n[21],maxi,p; while(scanf("%d",&x)!=EOF) { memset(n,0,sizeof(n)); n[x]++; for(i=1;i<20;i++) { scanf("%d",&x); n[x]++; } maxi=n[1]; p=1; for(i=2;i<=20;i++) if(n[i]>maxi) { maxi=n[i]; p=i; } printf("%d\n",p); } return 0; }
Java解答
import java.util.*; public class Main{ final static Scanner jin=new Scanner(System.in); public static void main(String args[]){ while(jin.hasNextInt()){ int a[]=new int[15]; Arrays.fill(a,0); int M=0; for(int i=0;i<20;i++){ int x=jin.nextInt(); a[x]++; if(a[x]>M) M=a[x]; } for(int i=1;i<=10;i++){ if(a[i]==M){ System.out.println(i); break; } } } } }