题目描述:
排列与组合是常用的数学方法。 先给一个正整数 ( 1 < = n < = 10 ) ,例如n=3,所有组合,并且按字典序输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
输入
输入一个整数n( 1<=n<=10)
输出
输出所有全排列
每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)
样例输入
3
样例输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
代码
import java.util.Scanner;
public class Main {
int n;
boolean[] mark;
int[] A;
public Main() {
Scanner s = new Scanner(System.in);
n = s.nextInt();
mark = new boolean[n + 1];
A = new int[n];
Search(0);
}
void Search(int pos) {
if (pos == n) {
System.out.print(A[0]);
for (int i = 1; i < n; i++)
System.out.print(" " + A[i]);
System.out.println();
return;
}
for (int i = 1; i <= n; i++) {
if (mark[i] == false) {
A[pos] = i;
mark[i] = true;
Search(pos + 1);
mark[i] = false;
}
}
}
public static void main(String[] args) {
Main p = new Main();
}
}