题目描述
到了竞选班干部的时候了, 现有n个数, 代表所投人选的编号。请问哪位编号的同学选票最多。(若有多人, 则输出编号最小的)
输入
第一行输入一个整数n(1 ≤ n ≤ 1000)。
第二行输入n个整数a0, a1, a2, ... an-1(1 ≤ ai ≤ 1000)。
输出
输出占一行。为票数最多人的编号。
样例输入 Copy
6 4 1 7 8 8 5
样例输出 Copy
8
分析:肯定是数组方面问题
两个关键1.重复次数最多的a[i]的值;2.重复次数一定时,a[i]数值最小。
#include<stdio.h>
int main()
{
int a[1000],n,count=0,max=1,t,i,j;//t是临时变量储存a[i]的值,count是计a[i]重复的次数,max是重复次数的最大值。
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}//输入数组a[i],代表所投的票。
for(i=0;i<n;i++){//这是先取出一个数,
count=0;//(这个很关键,确保计每一个a[i]的重复次数时,都是从0开始)
for(j=0;j<n;j++){//然后将这个数与数组中的数进行比较,
if(a[i]==a[j])count++;//如果相等则+1
}
if(count>max){//重复次数>max,则这个a[i]更符合。第一种情况:取重复次数最大
t=a[i];
}
else if(count==max){
if(a[i]<t)t=a[i];//第二种情况:重复次数一样,取最值更小的。
}
}
printf("%d",t);
return 0;
}