求众数问题算法的思路(用递归与分治策略)

给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为众数.例如,S={2,4,5,7,1,2,2,6,9,7}S的众数为2... 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为众数.例如,S={2,4,5,7,1,2,2,6,9,7}S的众数为2,其重数为3 对于这个问题本人还没有任何思路,不知道怎么下手,恳请有经验的哥哥姐姐们指点!!求此问题的解决思路 展开
 我来答
w与FS
2012-02-09
知道答主
回答量:29
采纳率:0%
帮助的人:11.9万
展开全部
题目要求输入若干不超过100的非负整数,输出众位数,若有多个,从小到大输出。
#include <stdlib.h>
#include <string.h>
int main()
{
int n;
scanf("%d",&n);
int i,j,a[100],m,max=0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
scanf("%d",&m);
a[m]++; //这是程序的巧妙之处,利用数组的下标作为出现数字的保存,而且避免了相同数字的重复记录。
}
for(i=0;i<100;i++)
for(j=0;j<100;j++)
{
if(a[i]>a[j]&&a[i]>max) //利用变量储存最大数,想了挺久才想出加上a[i]>max的条件。
max=a[i];
}
for(i=0;i<100;i++)
if(a[i]==max)
printf("%d ",i);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28b4182
2012-02-02 · TA获得超过7218个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1770万
展开全部
不用递归可以吗?我想先排个序,然后相同的数字一定会在一起的,然后数一数哪一种数是最多的就行了,我以前写过.递归分治好像没什么优势吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式