求指导,笨鸟求指导
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这结果后,认真看下你调试运行就会发现一个很神奇的东西!!希望有人会发现啦~~!!
------解决方案--------------------
新人需要指导,而不是批评,谁刚开始能写出很精辟的算法。别人是来求教问题的不是让你来说别人算法烂的,谢谢!