深度优先搜索:
深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次,接下来由两道例题来进一步了解。
t1.踩方格
思路:此题和递归种的汉诺塔问题很相似,也用递归的思想来操作如下图所示
因此此题最重要的就是这个自定义函数
int ways(int i, int j, int n)//从坐标(i,j)开始走
{
if (n == 0)//步数为零返回一
return 1;
visited[i][j] = 1; //将走过的位置置为一
int num = 0; //方法数
if (!visited[i][j - 1]) //判断西边是否走过
num += ways(i, j - 1, n - 1);
if (!visited[i][j + 1])//判断东边是否做过
num += ways(i, j + 1, n - 1);
if (!visited[i + 1][j])//判断北边是否走过
num += ways(i + 1,j, n - 1);
visited[i][j] = 0;//将走过的初始位置置为零&