【发布时间】:2014-11-13 07:09:20
【问题描述】:
在瑞典有一个足球(足球)投注游戏,您可以在其中尝试找出 13 场比赛的结果。由于每场比赛都可能有主队获胜、平局或客队获胜,这导致 3**13=1594323 个可能的结果。如果你有 10 到 13 场比赛正确,你就赢了。当许多其他人也获得高分时,您不希望发生这种情况,因为奖金是由所有获胜者分配的。这是我正在寻找答案的更通用问题的背景:如何从矩阵中的给定数组(在本例中为 1594323*13)中找到至少相差 x 个元素的所有数组。
我想到的第一个明显想法是嵌套 13 个 for 循环并同时比较一个数组。但是,我使用这个问题作为培训课程来学习自己的 Python 编程。 Python 不是此类任务的最佳工具,我可以求助于 C 来获得更快的程序,但我对最好的算法感兴趣。
在 Python 中,我尝试了最多 10 个匹配的嵌套 for 循环方法,然后执行时间变得太长,在我正在使用的上网本上为 5 秒。每增加一个匹配项,执行时间就会增加十倍。
另一种方法是使用数据库,这可能是解决方案,但我很好奇解决此类问题的最快方法是什么。我没有成功地用谷歌搜索这个问题,可能是因为在简短的搜索中很难使用正确的问题描述。
【问题讨论】: