从M个数中随机选出N个数的所有组合,无序,(一)
这题目其实就是很经典的
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个数的所有组合,有序,(二)