比如 m=4,n=3。n表示每一列的数量,要使得每一列的相加结果等于m。组合包括:4、0、03、0、13、1、02、0、22、1、12、2、01、0、31、1、21、2、11、3、00、0、40、1、30、2、20、3、10、4、0
1 回答

繁花如伊
TA贡献2012条经验 获得超12个赞
給一個 Python Top-down Recursive 版本的作法:
def gen(m, n, p=[]):
if n==0:
if m==0:
yield p
else:
return
else:
for i in range(m+1):
yield from gen(m-i, n-1, p+[i])
for p in gen(4,3):
print(p)
結果:
[0, 0, 4]
[0, 1, 3]
[0, 2, 2]
[0, 3, 1]
[0, 4, 0]
[1, 0, 3]
[1, 1, 2]
[1, 2, 1]
[1, 3, 0]
[2, 0, 2]
[2, 1, 1]
[2, 2, 0]
[3, 0, 1]
[3, 1, 0]
[4, 0, 0]
我回答過的問題: Python-QA
添加回答
举报
0/150
提交
取消