subtlation 发表于 2004-1-8 17:53:00

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

问问各位高手:假定下面每一行是一组数,如何找出同组出现的次数最多的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的数组。全部赋值。
接下来就看数组中哪个元素最多了。找到这个元素。次数、哪里出现都可以解决了。

不过有个问题就是这种算法速度太慢。各位高手能不能找出更好的算法?

myfreemind 发表于 2004-1-8 18:29:00

是做福利彩票统计程序吧?呵呵

efan2000 发表于 2004-1-8 18:58:00

我觉的不用这么麻烦,先构造一个数组C(1 to 29),用于保存20期中每个数字出现的次数。然后取消一期,如:9 11 14 15 19 21 24 22,分别判断它们在C中的次数,最大的三个应该就是所求的吧。
不知道这样的思路对不对。

subtlation 发表于 2004-1-9 14:09:00

myfreemind发表于2004-1-8 18:29:00static/image/common/back.gif是做福利彩票统计程序吧?呵呵


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

subtlation 发表于 2004-1-9 14:13:00

efan2000发表于2004-1-8 18:58:00static/image/common/back.gif我觉的不用这么麻烦,先构造一个数组C(1 to 29),用于保存20期中每个数字出现的次数。然后取消一期,如:9 11 14 15 19 21 24 22,分别判断它们在C中的次数,最大的三个应该就是所求的吧。



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

Mrqq18 发表于 2004-1-9 16:06:00

在构造数组之前先过滤一些不可能的组合:
设实际号码的连乘积为A,每一个组合的连乘积为B,
则A/B不为整数时,这个组合不会出现在某一期中。
页: [1]
查看完整版本: [讨论]如何找出同组出现的次数最多的3个数?(提供思路就行)