求指导,笨鸟求指导
import java.util.Scanner;
public class enum1 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {		
		Scanner kbd=new Scanner(System.in);
		int n=kbd.nextInt();
		int[] A=new int[n];
		enum1.print_permutation(n, A, 0);
	}
	static void print_permutation(int n,int[] A,int cur){
		int i,j;
		if(cur==n){
			for(int k=0;k<n;k++)
			System.out.print(A[k]+" ");
			System.out.println();
		}
		for(i=1;i<=n;i++){
			boolean ok = true;
			for(j=0;j<cur;j++){
				if(A[j]==i)
					ok=false;
			}
			if(ok){
				A[cur]=i;
				print_permutation(n, A, cur+1);
			}
		}
	}
}
这是个排列的代码,如输入4:会得出结1 2 3 4  
1 2 4 3  
1 3 2 4  
1 3 4 2  
1 4 2 3  
1 4 3 2  
2 1 3 4  
2 1 4 3  
2 3 1 4  
2 3 4 1  
2 4 1 3  
2 4 3 1  
3 1 2 4  
3 1 4 2  
3 2 1 4  
3 2 4 1  
3 4 1 2  
3 4 2 1  
4 1 2 3  
4 1 3 2  
4 2 1 3  
4 2 3 1  
4 3 1 2  
4 3 2 1  
但我觉得他输出1 2 3 4后,程序就会停止,因为输出结果后cur变5,然后再运行下面的for...哎好难表达啦,当输出了1 2 3 4这结果后,认真看下你调试运行就会发现一个很神奇的东西!!希望有人会发现啦~~!!
------解决方案--------------------