(重新发布,因为我之前的帖子没有得到任何回复)
我正试图编写一个Python代码来生成一个数为n的弱整数组合(分区)到k的部分,但是每个分区上都有一个最小值和最大值约束(参见下面给出的示例)。此外,分区必须按字典顺序生成。我找到了一些相关的帖子,但没能实现。任何帮助都将不胜感激。你知道吗
示例:
k=3部分中n=5的可能整数分区:
[5,0,0],[4,1,0],[4,0,1],[3,2,0],[3,1,1],[3,0,2],…,[0,0,5]
在设置分区中每个整数的最小值为0,最大值为3的约束之后,我应该得到:
[3,2,0],[3,1,1],[3,0,2],…以此类推。你知道吗
相关岗位:
Elegant Python code for Integer Partitioning
Generate lexicographic series efficiently in Python
这类问题最容易用递归生成函数来解决。要将
n
分区为k
部分,我们可以选择第一部分v
,然后递归地将n - v
分区为k - 1
部分。你知道吗您希望早期的解决方案在第一个位置有较大的数字,因此我们将按降序选择
v
。你知道吗示例:
相关问题 更多 >
编程相关推荐