在瑞典有一种足球博彩游戏,你试图找出13场比赛的结果。由于每场比赛都可能有一场主场胜利、一场平局或一场客场胜利,这将导致3**13=1594323个可能的结果。如果你有10到13场正确的比赛,你就赢了。你不希望这种情况发生时,许多其他人也有高分,因为奖金总额是分配给所有获奖者。这是我正在寻找答案的更一般问题的背景:如何找到与矩阵中给定数组至少相差x个元素的所有数组(在本例中为1594323*13)。你知道吗
我想到的第一个明显的想法是,将13个for循环嵌套起来,同时比较一个数组。然而,我将这个问题作为一个培训课程来学习Python编程。Python不是这类任务的最佳工具,我可以使用C来获得更快的程序,但我对最好的算法本身很感兴趣。你知道吗
在Python中,我尝试了最多10个匹配项的嵌套for循环方法,但是执行时间太长,在我使用的上网本上是5秒。每增加一个匹配,执行时间就增加10倍。你知道吗
另一种方法是使用数据库,这可能是解决方案,但我很好奇解决这类问题的最快方法是什么。我没有成功地用google搜索这个问题,可能是因为很难在短时间内使用正确的问题描述。你知道吗
下面是一个递归解决方案,在我的机器上,当给定
x
值0(最坏的情况)时,它将在大约5秒钟内终止。对于大于等于10的x
值,它几乎是瞬时的。你知道吗相关问题 更多 >
编程相关推荐