【n个不同元素中任取m个元素】
* 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
* [1,n],[1,n-1],[1,n-2]……[1]
*
*/
public class WholeArray {
//组合数
private static int totalTime=0;
/**
* m*(m-1)*……*1的实现
* @param numbers
* @param numbersTemp
* @param marks
* @param m
*/
public static void printWholeArray(String[] numbers, String[] numbersTemp,
boolean marks[], int m) {
for (int j = 0; j < marks.length; j++) {
if (!marks[j]) {
break;
}
if(j==marks.length-1 && marks[j]){
// marks数组里都标志位true了,完成一次全排列,输出一组排列
//printArray(numbersTemp);
totalTime++;
break;
}
}
/*if(m==0){
return;
}*/
/*boolean flag = false;*/
for (int j = 0; j < marks.length; j++) {
if (!marks[j]) {//如果[1,n]或[1,n-1]或[1,n-2]……或[1]中没有使用过的选择
numbersTemp[numbers.length - m] = numbers[j];
marks[j] = true;//标志为已用
// 处理剩余的i-1个数的全排列
printWholeArray(numbers, numbersTemp, marks, m - 1);
/*flag = false;*/
marks[j] = false;//标志为未用
}/*else if(j==marks.length-1 && marks[j] && flag){
// marks数组里都标志位true了,完成一次全排列,输出一组排列