这就是数学中的
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; } } } }