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

时间:2023-03-09 18:41:09
从M个数中随机选出N个数的所有组合,有序,(二)

这就是数学中的

A m

n

的选取。

共有   m!/n!种可能。。

同样举一个例子吧。。

从12345这五个数字中随机选取3个数字,要求选出来的这三个数字是有序,也就是说从12345中选出来的是123这三个数的话,那么就有

123,132,312,321,213,231

这六种可能。。

好了。废话不多说了,上程序,解释写在城市的注释里。

//A53
//排序,12345找出所有的排序组合
public class Test7 { static char[] ch;
static String str="";
//选取的数字的个数
static int len=3; public static void main(String[] args) {
String str="12345";
char[] c = str.toCharArray();
ch=c;
show(c, 0, c.length);
} public static void show(char[] c,int start,int end){
if((start+c.length-len)==end){
for(int i=0;i<len;i++){
System.out.print(c[i]);
}
System.out.println();
}else{
for(int i=start;i<c.length;i++){
//每个数都与第一个数进行交换位置
char temp=c[start];
c[start]=c[i];
c[i]=temp;
//从start+1个数开始下一轮遍历
show(c, start+1, end); //交换完位置遍历之后返回原有位置
temp=c[start];
c[start]=c[i];
c[i]=temp;
}
}
}
}

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