假设数字和为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, _)))