乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 96|回复: 5

[讨论]如何找出同组出现的次数最多的3个数?(提供思路就行)

[复制链接]

26

主题

177

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
281
发表于 2004-1-8 17:53:00 | 显示全部楼层 |阅读模式
问问各位高手:假定下面每一行是一组数,如何找出同组出现的次数最多的3个数?
9        11        14        15        19        21        24        22
1        9        11        13        16        19        25        26
4        5        7        16        18        20        25        24
7        13        21        23        27        28        29        16
1        2        10        15        16        19        23        24
8        9        11        15        16        17        30        3
2        5        9        16        18        19        27        26
2        5        14        19        23        25        26        27
5        7        11        12        13        19        21        8
5        11        12        16        23        24        28        27
1        3        7        12        21        26        29        27
2        8        9        10        18        20        24        23
7        10        16        17        19        23        27        3
我的算法是:
假定计算的是三个同期数字,共有20期。
每期的8个数字中进行排列组合(数字从小到大排列)应该共有(8*7*6)/(3*2*1)=56种排列。
把这些排列全部列出来。(每个数字可以用“,”分开,比如 9,11,13)
如果用程序就构造一个56*20的数组。全部赋值。
接下来就看数组中哪个元素最多了。找到这个元素。次数、哪里出现都可以解决了。
不过有个问题就是这种算法速度太慢。各位高手能不能找出更好的算法?
回复

使用道具 举报

41

主题

657

帖子

9

银币

中流砥柱

Rank: 25

铜币
821
发表于 2004-1-8 18:29:00 | 显示全部楼层
是做福利彩票统计程序吧?呵呵
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2004-1-8 18:58:00 | 显示全部楼层
我觉的不用这么麻烦,先构造一个数组C(1 to 29),用于保存20期中每个数字出现的次数。然后取消一期,如:9 11 14 15 19 21 24 22,分别判断它们在C中的次数,最大的三个应该就是所求的吧。
不知道这样的思路对不对。
回复

使用道具 举报

26

主题

177

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
281
发表于 2004-1-9 14:09:00 | 显示全部楼层

是统计彩票用的,不过是别人统计用的。在excelhome里面看到这个帖子,我用excel的vba编了这个一个统计三个数同期出现的最大次数。就是用我在一楼的思路,但我觉得这个算法运算太慢了。想看看是否有更好的算法。
回复

使用道具 举报

26

主题

177

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
281
发表于 2004-1-9 14:13:00 | 显示全部楼层

这样求出来的应该是出现次数最大的三个数吧?但不能保证这是同期出现次数最多的三个数啊。我用一楼的思路写了个程序(见附件),能用。但我想知道有没有更好的算法。
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:1qj0vyjxxnj.rar 
下载次数:0  文件大小:16.39 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

回复

使用道具 举报

17

主题

38

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2004-1-9 16:06:00 | 显示全部楼层
在构造数组之前先过滤一些不可能的组合:
设实际号码的连乘积为A,每一个组合的连乘积为B,
则A/B不为整数时,这个组合不会出现在某一期中。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 10:46 , Processed in 0.808603 second(s), 69 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表