题目描述
排列与组合是常用的数学方法。
先给一个正整数 ( 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 Permutation1546 {
int n;
boolean[] mark;
int[] A;
public Permutation1546() {
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) {
Permutation1546 p=new Permutation1546();
}
}