黑马程序员技术交流社区

标题: 整数的分划问题。 [打印本页]

作者: 宋蕈    时间: 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);
                }
            }
        }
    }

    public static void main(String[] args) {
        function(new int[6], 6, 0);
    }
}

作者: pray    时间: 2014-4-26 05:04
我艹!(此回复虽仅有两个字,却深刻地表达了回复人的深深的祝福与刻骨的情感,可谓言简意赅,一字千金,字字扣人心弦,字字催人泪下,足可见回复人扎实的文字功底和信手拈来的写作技巧及惨绝人环的创新能力。实是佩服佩服!再加上以感叹号收尾,点睛之笔,妙笔生花,意境深远,照应前文,升华主题,把回复人的感情表达得淋漓尽致,给人无限感动和惆怅,有浑然天成之感,实乃回复中之极品,祝福中之绝笔.)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2