全排列问题的回溯解法:
public class Permute {
public int N;
public int[] X;
public static void main(String[] args) {
new Permute().test(4);
}
public void test(int _N){
N=_N;X=new int[N];
for(int i=0;i<N;i++)X[i]=i+1;
backTrace(0);
}
public void backTrace(int t){
if(t==N-1){
for(int i=0;i<N;i++)System.out.print(X[i]);
System.out.println();
return;
}
else{
for(int i=t;i<N;i++){
swap(X,t,i);
backTrace(t+1);
swap(X,t,i);
}
}
}
public void swap(int[] arr,int i,int j){
int temp=arr[i];arr[i]=arr[j];arr[j]=temp;
}
}