通过hdoj 1010来了解深度优先搜索的特征
题目大意是狗被困在迷宫里面,输入迷宫地图,S和D分别代表起点和终点,X代表障碍物,即此路不通,判断是否能在给定时间t到达终点。
注意有个坑:到达终点的时间必须刚好等于时间t(当时改了半天才发现o(╥﹏╥)o)
这是我修改之后的代码,需要注意的点写在了注释中
#include<iostream>
using namespace std;
int n,m,t,d,xs,ys,xd,yd;
char map[10][10]; //存储迷宫地图
int visit[10][10]; //判断某一点是否已经访问过
int b[4][2]={
{
0,1},{
1,0},{
-1,0},{
0,-1}}; //代表上下左右四个方向
bool jd=false; //判断是否已经找到正确路径
void dfs(int x,int y,int step){
if(step>t) //步数大于时间则返回
return ;
else if(jd==true){
//之前已经找到正确路径
return ;
}
else if(map[x][y]=='D'){
//这样写相比于map[x][y]=='D'&&step==t的好处是如果step小于t可以执行下面第三行的return,减少计算量
if(step==t) //到达终点并且找到正确路径
jd=true;
return ;
}
visit[x][y]=1;
step++;
for