我很喜欢阅读本网站;这是我的第一个问题。欢迎进行编辑。
给定正整数n和m,将m的所有有序分区精确地计算为n个正整数部分,并用逗号和换行符分隔它们。任何顺序都可以,但是每个分区必须恰好出现一次。
例如,给定m = 6和n = 2,可能的分区是对正整数的和,总和为6:
1,5
2,4
3,3
4,2
5,1
请注意,[1,5]和[5,1]是不同的有序分区。输出应与上述格式完全相同,并带有可选的尾随换行符。(编辑:分区的确切顺序无关紧要)。输入/输出通过标准代码高尔夫球I / O进行。
m = 7,n = 3的另一个示例输出:
1,1,5
1,2,4
2,1,4
1,3,3
2,2,3
3,1,3
1,4,2
2,3,2
3,2,2
4,1,2
1,5,1
2,4,1
3,3,1
4,2,1
5,1,1
1周后以字节为单位的最小代码获胜。
同样,请根据需要进行编辑。
附录:
@TimmyD询问程序必须支持的整数输入大小。除示例外,没有其他最低要求。实际上,输出大小呈指数增长,粗略地建模为:lines = e ^(0.6282 n-1.8273)。
n | m | lines of output
2 | 1 | 1
4 | 2 | 2
6 | 3 | 6
8 | 4 | 20
10 | 5 | 70
12 | 6 | 252
14 | 7 | 924
16 | 8 | 3432
18 | 9 | 12870
20 | 10 | 48620
22 | 11 | 184756
24 | 12 | 705432