这就是数学中的

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个数的所有组合,无序,(一)