把2N个球放到M个盒子里(N=M)使得各盒中的球数为偶数 By:Luo Weifeng 2011-3-16 昨天一MM(老同桌)问了我一简单的算法设计题。题目就这个题目,算是很简单了,不过越是简单的事情越考验一个人的东西。 To iterate is human, torecurse divine L. Peter Deu
把2N个球放到M个盒子里(N>=M)使得各盒中的球数为偶数
By:Luo Weifeng 2011-3-16
昨天一MM(老同桌)问了我一简单的算法设计题。题目就这个题目,算是很简单了,不过越是简单的事情越考验一个人的东西。
“To iterate is human, to
recurse divine”——L. Peter Deutsch (“人理解迭代,神理解递归。”)
问题不难所以就很快搞定了,让我再次回头看这个问题的原因是,这么简单的问题竟然综合了 iterate和recurse的方法。废话不说,贴代码如下:
package test;
/*
把2N个球放到M个盒子里(N>=M)使得各盒中的球数为偶数
*/
public class CopyOfBulbSeparation{
static final int M = 3;
static final int N = 4;
static int[] boxQueue = new int[M];
static void SeparationBulb(int length,int N){
if(length == 1 ){
boxQueue[M - 1] = N;
for(int i = 0;i < boxQueue.length;i++){
System.out.print("/t"+2*boxQueue[i]+"/t");
}
System.out.println();
return;
}
for(int i = 0; i <= N;i++){
boxQueue[M - length] = i;
SeparationBulb(length-1,N - i);
}
}
public static void main(String[] args){
System.out.println("M:" + M);
System.out.println("N:" + N);
SeparationBulb(M,N);
}
}
运行结果:
M:3
N:4
008
026
044
062
080
206
224
242
260
404
422
440
602
620
800
代码没什么好说的,很简单。O(∩_∩)O~
本文原创发布php中文网,转载请注明出处,感谢您的尊重!