[英]Question about algorithm analysis to find all combinations of m elements out of n elements
我正在用Python編寫一個算法來查找n個元素中m個元素的所有組合。
我看過評論但沒有評論,所以我無法解釋這個問題。
當n = 7時,代碼的結果是(0,1,2,3),(0,1,2,4)......(3,4,5,6)。
但我對pick和to_pick在代碼中的作用含糊不清。
碼
def pick(n, picked, to_pick):
if to_pick is 0:
return print(picked)
if len(picked) is 0:
smallest = 0
else:
smallest = picked[-1] + 1
for next in range(smallest, n):
picked.append(next)
pick(n, picked, to_pick - 1)
picked.pop()
if __name__ == '__main__':
result = list()
pick(7, result, 4)
picked
是當前時刻選擇的有序結果組合
to_pick
是完全組合所需的元素數
想象一下中間級別 - 例如,你picked=[1,2]
,所以to_pick
是2(需要2個元素),你可以從范圍3..7
選擇下一個元素
注意小邏輯缺陷 - 如果你現在選擇7,你不能進行下一步並獲得完整的4項組合(只是過多的n - to_pick
用),所以明智的做法是將for-loop的上限限制為n - to_pick
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.