从M个数中随机选出N个数的所有组合,无序,(一)

时间:2022-12-30 18:52:03

这题目其实就是很经典的

Cn

   m

的问题,即从m个数中选取n个数,要求选出来的数是无序的。

就以下面的例子来演示一下把。

题目:从1,2,3,4,5中随机选取3个数,要求列举出所有的组合。

/**

*

* @author Administrator

*从5个数中随机挑选3个数的所有组合,我们只需要修改str:供挑选的数字集合,

*Length:挑选的数量就可以获取所有的可能。至于故意输出Length大于数组数量的,自己看结果把!^_^

*/

public class Test8 {

static char[] ch;

final static int Length=3;//挑选的数量

static String str="12345";//备选的数

public static void main(String[] args) {

char[] c = str.toCharArray();//分成数组的形式

ch=c;String result="";

show(result, 0, Length);

}

/**

*这里输入的参数含义为,result:已经选择了的数,start:从第start位开始选数,length:还需要选择几个数。

*/

public static void show(String result,int start,int length){

if(length==0){

System.out.println(result);

}else{if(length<=(ch.length-start)){

/**这里我们分成两种情况来分析,比如12345中选三个数,我们选不选1,这个数,
*如果不选,那么执行第一个show方法,如果选,执行第二个show方法,这样我们就可以利用递归列举出所有的可能
*/
show(result, start+1, length);
result+=ch[start];
show(result, start+1, length-1);
}
}
}

结果:

345
245
235
234
145
135
134
125
124
123


下一篇:从M个数中随机选出N个数的所有组合,有序,(二)