python - 关于从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]
2to_pick
个(还需要 2 个元素),并且您可以从范围中获取下一个元素3..7
请注意小的逻辑缺陷 - 如果您现在选择 7,您将无法进行下一步并获得完整的 4 项组合(只是过多的空调用),因此限制 for 循环的上限是明智的n - to_pick
推荐阅读
- c# - 有没有办法将 CommandFlags 添加到辅助函数中?
- simulation - 如何在 SUMO 中建模出租车,以便人们只在不太远的情况下选择它
- c# - C# RabbitMQ 为什么第二个工人不接工作?
- java - 如何使用 stashboard 创建仪表板状态应用程序?
- c# - JustMock SQL 插入检查外键
- node.js - 如何在 node-fetch 中设置内容类型
- html - 冲突的 OL 和 UL ::before 选项
- python - 如何解决我的 python 代码(数组和绘图)中的问题?
- firebase - 使用 FirebaseAuth 在我的颤振应用程序中重置密码
- sql - 在 PgAdmin 4 实用程序中找不到