为了账号安全,请及时绑定邮箱和手机立即绑定

给定任意正整数m,n。输出所有的可能的正整数排列组合(x[1],..x[n])

给定任意正整数m,n。输出所有的可能的正整数排列组合(x[1],..x[n])

jeck猫 2019-03-21 18:15:21
比如 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

查看完整回答
反对 回复 2019-04-23
  • 1 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号