题目:给一个数组,打印出所有的排列
import java.util.Arrays;
public class Pailie {
int b[]; //保存结果
int a[];
Pailie(int [] a){
b = new int[a.length];
this.a=a;
}
public void backTrack(int begin){
if(begin==a.length)print(b); //递归的底部了
else
{ //比如1234 begin=1那么(1)234 经过这个循环
//第一回合(12)backTrack(34)
//第二回合(13)backTrack(24)
//第三回合(14)backTrack(23)
for(int j=begin ;j<a.length;j++){
b[begin]=a[j]; //把当前的给结果
shift(a,begin,j); //交换
backTrack(begin+1);//递归
shift(a,j,begin); //交换回原来的状态
}
}
}
public void shift(int [] a,int i,int j){
int temp =a[i];
a[i] = a[j];
a[j] = temp;
}
public void print(int [] b){
System.out.println(Arrays.toString(b));
}
public static void main(String [] args){
int [] a={1,2,3};
Pailie p = new Pailie(a);
p.backTrack(0);
}
}