文章

20

粉丝

146

获赞

10

访问

42.0k

头像
求众数 题解:
P1810 复旦大学2018年机试
发布于2023年11月5日 22:38
阅读数 610

#include <bits/stdc++.h>
int main(){
	int n[100];
	int m;//输入的次数 
	scanf("%d",&m);
	int i=0;
	while(i<m){
		scanf("%d", &n[i]);
		i++;
	} 
	int k[100]={0}; 
	//遍历数组n,用数组k存储n中每个位置与之相同的数字的个数 
	for(int i=0;i<m;i++){
		int count=1;
		for(int j=0;j<m;j++){
			if(j!=i&&n[i]==n[j])
				count++;
		}
		k[i]=count;
	}

//从数组k中找到最大的值
	int max=0;
	for(int i=0;i<m;i++){
		if(k[i]>max){
			max=k[i];
		}
	}
	//可能有多个数的相同值都为这个最大数,例如2和4的个数都为5
	//循环数组k,找出值为max的 数组下标存放在数组p中
	int  p[1000]={0};
	int j=0;
	for(int i=0;i<m;i++){
		if(max==k[i]){
			p[j]=i;
			j++;
		}
	} 
	//遍历数组p
	int min=n[p[0]];
	for(int i=0;i<j;i++){
		if(n[p[i]]<min)
			min=n[p[i]];
	} 
	printf("%d",min);
	return 0;
} 

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发