簡體   English   中英

關於算法分析的問題,以找出n個元素中m個元素的所有組合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM