首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一道软件设计大赛的模拟试题,求解?解决办法

2012-03-03 
一道软件设计大赛的模拟试题,求解?官网上下载的。。。看到题目思路很乱,不知该从何下手,求高人指点思路9.代码

一道软件设计大赛的模拟试题,求解?

官网上下载的。。。看到题目思路很乱,不知该从何下手,求高人指点思路

9.代码设计(满分18分)

整数的分划问题。 
如,对于正整数n=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)
程序输出该整数的所有划分。


[解决办法]
来来,这是前一次一个仁兄的一个变体,估计你能解决问题~你在删选一下吧

public static void main(String[] args) {
run(6);
}

public static void run(int n) {
ArrayList<Integer> al = new ArrayList<Integer>();
p(n, al, n);
}

private static void p(int n, List<Integer> al, int size) {
if (n == 0) {
for (Integer i : al)
System.out.print(i + " ");
System.out.println();
} else if (n < 0) {
return;
} else {
int num = al.size();
for (int i = 1; i <= size; i++) {
al.add(i);
p(n - i, al, size);
al = al.subList(0, num);
}
}
}
[解决办法]
递推,n=(n-1)+1;
从2的时候一路算上去。

热点排行