package demoFour;
/*
*@author:张文波
*@time2020年4月10日下午2:44:45
*/
//输入一个字符串输出所有可能的情况,比如abc:abc,acb,bac,bca,cab,cba;
public class QuanPaiLie
{
//定义两个变量一个递归的层次计数变量,一个用于记录每层可能性排序的
public static int pos=0;
public static char[] temp;
//还有一个变量,就是布尔类型的数组,作用是记录已经访问多少位了
public static boolean isFlag[];
//思路:利用一个递归思想和每层递归分别选择一种可能性
public static void main(String[] args)
{
char []tt= {'a','b','c'};
temp=new char[tt.length];
isFlag=new boolean[tt.length];
splitChar(tt);
}
//递归方法,首先需要思考的是递归结束的条件,这里我们采用一个变量计数方法,
//每当计数变量等于所输入的字符串长度,说明就满足了一种可能性
public static void splitChar(char tt[]) {
if(pos==tt.length) {
System.out.println(new String(temp));
return;
}
for(int i=0;i<tt.length;i++) {
if(!isFlag[i]) {
isFlag[i]=true;
temp[pos]=tt[i];
pos++;
splitChar(tt);
pos--;
isFlag[i]=false;
}
}
}
}