【发布时间】:2017-06-04 22:14:26
【问题描述】:
我正在尝试实现一个程序,该程序返回整数 n 的现有分区数作为赋值的一部分。我写了下面的代码,但是它返回了错误的数字(Partitions n 返回了 Partitions n-1 的结果)。我不明白为什么会这样。试了很多方法还是不知道怎么解决,有大神能帮帮我吗?
[edited code out to avoid plagiarism from my colleagues :p]
m 代表分区中允许的最大数,因此 partition(4,4) 将是 5 = 4, 3+1, 2+2, 2+1+1, 1+1+1+1,但是分区 (4,1) 将是 1 = 1+1+1+1。 执行:java 分区 n
【问题讨论】:
-
@JacobG。正整数 n 的分区是将 n 写为正整数之和的一种方式。仅在其被加数的顺序上不同的两个和被认为是相同的分区。更多:en.wikipedia.org/wiki/Partition_(number_theory)
-
else if (n <= 1 | m == 1)应该是else if (n <= 1 || m == 1) -
@KevinO 不应该影响程序的行为
-
您将
partition编写为两个整数n和m的函数(除了记忆数组,它还存储两个整数的函数)。我相信你有充分的理由这样做,但我们其他人不知道你的partition(n,m)的定义是什么。 -
我正在编辑问题以澄清它。 m 代表分区中的最大数,因此 partition(5, 5) 将是 7 = 5, 4 +1, ... 1 + 1 + 1 + 1 + 1 并且 partition (5, 1) 将是 1 = 1 + 1 + 1 + 1 + 1 我这样做是因为分配是从introcs.cs.princeton.edu/java/23recursion/Partition.java.html 派生的,他们在那里这样做
标签: java recursion dynamic-programming partitioning integer-partition