/**
* 已知一个非负整数n,列出集合S={1,2,~,n}的所有全排列
* @author JH
*
*/
public class one {
private static int count=0;
private static int n;
private static int[] list;
public static void pailie(int i) {
if(i >= n) {
output();
return;
}
for(int j = i+1; j < n; j++) {
swap(i, j);
pailie(i+1);
swap(i, j);
}
pailie(i+1);
}
public static void swap(int i, int j) {
list[i] ^= list[j];
list[j] ^= list[i];
list[i] ^= list[j];
}
public static void output(){
count++;
for(int i = 0;i < n;i++) {
System.out.print(list[i]+" ");
}
System.out.println();
}
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("输入非负整数N");
n = s.nextInt();
list = new int[n];
for(int i = 0;i < n;i++) {
list[i] = i+1;
}
pailie(0);
System.out.println("一共"+count+"种全排列");
}
}
回溯法 已知一个非负整数n,列出集合S={1,2,~,n}的所有全排列
最新推荐文章于 2019-12-05 19:21:51 发布