【发布时间】:2015-06-24 09:07:36
【问题描述】:
我正在用 java 编程,我需要制定一个算法。算法的要求是:
- 我们有 3 个整数变量
n、m、k; - 我们想将
n分成k部分,以便k-parts 的总和 等于n,每个部分都是1和m之间的整数。 - 我们希望所有可能的组合与允许的整数。
以输入集为例:
n = 7; m = 3; k = 4
我们可以制定两种不同的组合:
7 = 2 + 2 + 2 + 1
和
7 = 3 + 2 + 1 + 1
谢谢大家。
【问题讨论】:
-
这听起来像是一个 NP 难题。希望有人能说出问题来使您的搜索更容易
-
您想要“分区”本身还是只希望它们的计数(存在多少分区)?
-
我不确定这是否完全属于 java 标签。这里的问题更多是算法问题而不是 java 问题。一旦有了算法,java 实现就不应该成为问题
-
@RoelStrolenberg 这不是 NP 难。它甚至不是普通的硬。 :)
-
你可以用递归解决这个问题。
标签: java algorithm integer-division