关于算法分析的问题,以找出n个元素中m个元素的所有组合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于算法分析的问题,以找出n个元素中m个元素的所有组合相关的知识,希望对你有一定的参考价值。
我正在用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项组合(只是过多的空调用),所以明智的做法是限制for循环的上限n - to_pick
以上是关于关于算法分析的问题,以找出n个元素中m个元素的所有组合的主要内容,如果未能解决你的问题,请参考以下文章