这篇不是一次说完的而是我了解理解多少写多少
dfs:是图的一种遍历方法,但是到现在我只会写简单的走迷宫问题;
dfs 是一种搜索手段,简单来说他就是往死搜,不到答案和边界不停,(一根筋);
dfs在写走迷宫问题时用起来比较简单大概的模式就是
建立数组来存迷宫;
建立和迷宫一样大的数组来防止循坏走;
判断是否找到或者超边界;
递归查下一个;
bfs:走迷宫,就是把迷宫所走的,记录;
void bfs()
{
int x,y,tx,ty;
int head,tail;
head=0,tail=1;
lis[0].x=0;
lis[0].y=0;
pre[0]=-1;
while(head < tail)
{
x = lis[head].x;
y = lis[head].y;
if(x==4 && y==4) //终止条件,走到头;
{
print(head);
return;
}
for(int i=0;i<4;i++) //四周走,找点;
{
tx=x+p[i];
ty=y+q[i];
if(tx>4||tx<0||ty>4||ty<0||vis[tx][ty]==1)
continue;
if(!a[tx][ty])
{
vis[tx][ty]=1;
lis[tail].x = tx;
lis[tail].y = ty;
pre[tail] = head;
tail++;
}
}
head++;
}
return ;
}
上面是个模板,可以通用;