产生一个一串数字的字符串,其数字和为定值。

假设数字和为n,其每个数字为正整数。
产生的代码效果如下:
如 n=2, 长度L=5
20000
11000
10100
10010
10001
02000
01100
01010
01001
00200

依次类推;对任意n跟L都成立。

import itertools as it 

def div(n, m, s, l):
    if n == 0:
        l.append(s)
    else:
        if m>1:
            div(n, m-1, s, l)
        if m <= n:
            div(n-m, m, str(m)+ ' '+s, l) 
        

n = int(input(">>>"))
L = int(input(">>>"))
l = []
div(n, n, '', l)

for i in l:
    ls =list( map(int, i.strip().split()))
    ls += [0] * (L - len(ls))
    for _ in set(it.permutations(ls, len(ls))):
        print(''.join(map(str, _)))