/*使用深度优先搜索解决数的全排列问题*/
/*
深度优先搜索的基本模型:
void dfs(int step)
{
判断边界
尝试每一种可能 for(i = 1;i <= n;i++)
{
继续下一步 dfs(step + 1);
}
返回
}
*/
#include "stdio.h"
int a[10],book[10],n;//此处特别说明一下:C语言的全局变量在没有赋值以前默认为0,因此这里的book数组无需全部再次赋初值0
void dfs(int step)//step表示现在站在第几个盒子面前
{
int i;
if(step == n + 1)//如果站在第n+1个盒子面前。则表示前n个盒子已经放好扑克牌
{
//输出一种排列(1~n号盒子中的扑克牌编号)
for(i = 1;i <= n;i++)
{
printf("%d",a[i] );
}
printf("\n");
return;//返回之前的一步(最近一次调用dfs函数的地方)
}
//此时站在step个盒子面前,应该放那张牌呢?
//按照1,2,3。。。n的顺序一一尝试
for(i = 1;i <= n;i++)
{