标题: 整数的分划问题。 [打印本页] 作者: 宋蕈 时间: 2012-4-8 08:38 标题: 整数的分划问题。 如,对于正整数n=6,可以分划为:
6
5+1
4+2, 4+1+1
3+3, 3+2+1, 3+1+1+1
2+2+2, 2+2+1+1, 2+1+1+1+1
1+1+1+1+1+1+1
现在的问题是,对于给定的正整数n,编写算法打印所有划分。
用户从键盘输入 n (范围1~10)
程序输出该整数的所有划分。作者: 邓海涛 时间: 2012-4-8 13:37
这道题也是我那天在学习的过程中无意看到的,想了很久没有想出来,但是后来在网上查了很久终于在一个朋友那里看见了他的这个程序,我觉得思路还蛮清晰的,希望对你有帮助!
package cn.dan.wenti ;
public class Test {
public static void function(int[] str, int n, int m) {
if (n == 0) {
for (int i = 0; i <= m - 1; i++) {
if (i == (m - 1))
System.out.println(str[i]);
else
System.out.print(str[i] + " ");
}
} else {
for (int i = n; i >= 1; i--) {
if (m == 0 || i <= str[m - 1]) {
str[m] = i;
function(str, n - i, m + 1);
}
}
}
}