【发布时间】:2020-10-09 19:09:17
【问题描述】:
我在计算机科学和算法理论方面的经验很少。我需要按字典顺序生成并打印所有重复数字 1..n 大小为 k 的组合。我应该在不使用 itertools 的情况下做到这一点。我编写了简单的代码来创建所有组合,但这还不足以解决这个任务。
n, k = map(int, input().split())
def gen (n, k, prefix):
if len(prefix) == n:
print(*prefix)
return
for c in range(1, n + 1):
if c not in prefix:
gen(n, k, prefix +[c])
n1 = gen(n, k, [])
示例输入
3 3
样本输出
1 1 1
1 1 2
1 1 3
1 2 2
1 2 3
1 3 3
2 2 2
2 2 3
2 3 3
3 3 3
请帮助我找到解决方案!
【问题讨论】:
-
为什么不能使用itertools?
-
我的任务不包括使用 itertools。我必须在没有 itertools 及其函数/方法的情况下实现递归算法。
标签: python algorithm combinations combinatorics