把数字当做扑克牌按照一定顺序依次放到盒子内。
public class DfsTest {
//深度优先遍历, 求从1到n的所有数字排列
static int a [] = new int[10];
static int book [] = new int[10];//book中的值为标记用,初始值设置为0,为扑克牌在手上时
static int n = 3;//几个数字的全排列n
static int sum = 0;
static {
//为a和book数组赋值
for (int j = 1; j <= n; j ++){
a[j] = j;
book[j] = 0;
}
}
public static void main(String[] args) {
DfsTest test = new DfsTest();
test.dfs(1);
}
public void dfs(int step){//step 为目前站在第几个盒子面前
System.out.println(step+","+n);
int i;
if(step == n + 1){//如果站在n+1盒前,表示前n个盒子已经放好
for (i = 1; i <= n; i ++){
System.out.print(a[i]);
}
sum++;
System.out.println("here"+sum);
r