深度优先排序(数字全排列) Major^

输入一个整数n(n<10),输出1-n的全排列

 1 import java.util.Scanner;
 2 public class One {
 3     //数组a(模拟放数字牌的盒子)用于存放排序数字,数组book[i]用于标记牌i是否已经放入数组a
 4     public static int a[]=new int[10],book[]=new int[10],n;
 5     //函数f()用于输出所有可能情况的排列。
 6     public static void f(int x){//x为第几个盒子
 7         if(x==n+1){//当每次放玩牌的时候就把当次的排序输出
 8             for(int j=1;j<=n;j++){
 9                 System.out.print(a[j]+" ");
10             }
11             System.out.println("");
12         }
13         for(int i=1;i<=n;i++){
14             if(book[i]==0){//如果牌i还在手上
15                 a[x]=i;//把牌i放入当前的盒子
16                 book[i]=1;//标记牌i已经放入盒子(不在手上了)
17                 f(x+1);//走到下一个盒子,继续排列
18                 book[i]=0;//取出牌i,在该盒子放下一个牌
19             }
20         }
21     }
22     public static void main(String args[]) {
23         Scanner in=new Scanner(System.in);
24         n=in.nextInt();
25         f(1);//从第一个盒子开始放牌
26     }
27     }
数字全排列
基础学习
原文地址:https://www.cnblogs.com/qinmeizhen/p/6785045.html