提问人:zdm 提问时间:10/25/2023 最后编辑:zdm 更新时间:11/17/2023 访问量:96
如何找到所有排列总和为 n 的 k 个正数的所有分区
How to find all partitions of k positive numbers that sum to n with all permutations
问:
对于 和 ,我们有k=4
n=6
1 + 1 + 1 + 3 = 6
1 + 1 + 2 + 2 = 6
可以从分区号的三角形中获得。
但是我们可以有更多的排列(总共 4 个),如下所示:1 + 1 + 1 + 3
3
1 + 1 + 1 + 3
1 + 1 + 3 + 1
1 + 3 + 1 + 1
3 + 1 + 1 + 1
对于我们还可以有更多的排列(总共 6 个),如下所示:1 + 1 + 2 + 2
5
1 + 1 + 2 + 2
1 + 2 + 1 + 2
1 + 2 + 2 + 1
2 + 1 + 2 + 1
2 + 1 + 1 + 2
2 + 2 + 1 + 1
我认为总的来说,对于每个可能的分区。binomial(n, n - k)
如何在 Python 或 Julia 中找到所有这些分区?
在 Julia 中,我的尝试如下,我认为这是正确的,但不是最佳的,因为我正在生成所有排列,然后应用 unique 来删除重复的排列。
using Combinatorics
n, k = 6, 4
comb = []
for partition in partitions(n, k)
permuted_partition = permutations(partition)
unique_permuted_partition = unique(permuted_partition)
append!(comb, unique_permuted_partition)
end
答:
0赞
zdm
11/17/2023
#1
在 Julia 中,以下内容回答了这个问题,但我认为这不是最佳选择,因为我正在生成所有排列,然后应用 unique 来删除重复的排列。
using Combinatorics
n, k = 6, 4
comb = []
for partition in partitions(n, k)
permuted_partition = permutations(partition)
unique_permuted_partition = unique(permuted_partition)
append!(comb, unique_permuted_partition)
end
评论