问题描述
输入一个字符数组,输出所有不重复的字母序列
import static java.lang.Math.max;
public class Main {
public static void K(int cur,char[] aa)
{
String temp123 = ""; //每次递归新建一次
if(cur==aa.length)
{
System.out.println(Arrays.toString(aa));
}
else
{
for(int i = cur;i<aa.length;i++) //依次让该位置跟后面的每个位置交换一遍
{
if(temp123.indexOf(aa[i])==-1) //判断该字母有没有已经选过
{
temp123+=aa[i];
char temp=aa[i];aa[i]=aa[cur];aa[cur]=temp;
K(cur+1,aa);
temp=aa[i];aa[i]=aa[cur];aa[cur]=temp; //不用回溯,因为每次都新建一个新的
}
}
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=0;
char[]ch={'A','B','C'};
K(n,ch);
}
}