查找最多使用k次的子集

时间:2012-03-09 18:22:46

标签: algorithm

我不时地阅读所有关于被控制的基于乐透的游戏的阴谋论以及通过玩家选择的组合并确定未使用的子集的计算机浏览。它让我思考 - 这样的算法如何才能真正有效地确定这些子集?找到未使用过的数字肯定会被删除,因为找到最少使用的数字是因为它并没有为我们提供解决方案。此外,更深入的是,算法如何有效地选择这样一个子集,它被玩家使用了k次?更正式地说:

  

我们得到一组50个数字1到50.在抽签中,6个数字被选中。

     

INPUT:m个子集,每个子​​集由6个不同的数字组成,每个数字1到50个,   整数k(0 <= k)是具有所有6的最大玩家   数字正确。

     

输出:不超过k个玩家赢得累积奖金的子集(“获胜”表示他们选择的所有数字都在抽奖中被选中)。

是否有任何有效的算法可以计算出这一点,而不使用terrabyte硬盘来存储悲观情况下每个可能的50!/(44!* 6!)的所有遭遇?老实说,我想不出任何。

3 个答案:

答案 0 :(得分:3)

首先,组合的总数(从50中选择6)并不是很大。它大约有1600万,很容易处理。

对于每个组合,请记录播放它的人数。在宣布胜利者的同时选择少于k次的组合。

答案 1 :(得分:3)

如果我想进行这样的阴谋,我首先会获得玩家提交的提交清单。然后,我将生成随机抽奖选项,并查看每个此类选择将产生多少获胜者。然后选择最吸引我的随机抽选。没有必要做更复杂的事情,因为这可能已经足够强大,可以被静电人员注意到。

如果你想破坏彩票,那么选择一些你喜欢的竞争对手并让他们赢得彩票可能会更容易和更安全。在(书)“1984”中,我认为国家只是宣布想象中的彩票中奖者,每个区域都宣布宣布该区域以外的人。 Margery Allingham的“The Beckoning Lady”中的一个想法是试图建立一个赛马场的团伙,这样他们就可以进行比赛,让他们将贿赂伪装成奖金。

答案 2 :(得分:1)

如果对每个子集中的数字进行排序,那么您可以将子集视为字符串 - 按字典顺序对它们进行排序,然后很容易计算每个子集选择了多少玩家(以及根本没有选择哪些子集)。所以时间与球员的数量成正比,而不是彩票中的数字。

相关问题