我试图创建一个简单的递归函数,它将在Python中生成嵌套列表的列表。最终结果将代表一个单一的淘汰赛等级。我希望创建这样的列表可以让我更容易地生成我需要的东西。这将用于创建锦标赛比赛的模型。在
因此,如果有4名参赛者参加的比赛:
[[1,4],[2,3]]
7人锦标赛:
^{pr2}$或者是一个8人的锦标赛:
[[[1,8],[4,5]],[[2,7],[3,6]]]
我还没有一个算法类(我希望这个类最终能帮助解决这类问题),所以我不完全确定如何解决这个问题。以下是我目前为止的尝试。在
def decide_rounds(list_to_fill, player_nums):
if len(player_nums) < 3:
for num in player_nums:
list_to_fill.append(num)
return
left = []
decide_rounds(left, ??????) #Tried passing various things to these with no avail.
list_to_fill.append(left)
right = []
decide_rounds(right, ???????)
list_to_fill.append(right)
任何帮助或解释如何做到这一点将不胜感激!在
编辑:目前我调用的函数如下:
rounds = []
decide_rounds(rounds, range(1, size +1))
print rounds
试试这个:
我们注意到,对于一个有2^n个玩家的括号,每一对的总和是相同的数字。对于每一对,右项由左元素和递归深度决定,所以我们可以先生成数组深度。我们记下这些补充,只是为了改进运行时。它适用于任何
m > 1
,因为一旦补码太大,它就停止递归。在看到它的行动:http://ideone.com/26G1fB
相关问题 更多 >
编程相关推荐