迷宫问题的解法

栈与深度优先搜索

过程:

将起点标记为已走过并压栈

while(非空){

  从栈顶弹出一个点p;

  if(p是终点)

    break;

  否则沿右、下、左、上四个方向搜索相邻的点;

  if(和p相邻的点有路可走,并且还没有走过)

    将相邻的点标记为已走过并压栈,它的前趋就是p点;

}

if(p是终点){

  打印p点坐标

  while(p点有前趋){

    p点 = p点的前趋;

    打印p点的坐标;

  }

}else

  没有路线;

 

 

 

 

 

队列与广度搜索过程

将起点标记为已走过并入队

while(队列非空){

  出队一个点p;

  if(p这个点是终点)

    break;

  否则沿右、下、左、上四个方向搜索相邻的点

  if(和p相邻的点有路可走,并且还没有走过)

    将相邻的点标记为已走过并入队,它的前趋就是刚出对的p点;

}

if(p点是终点){

  打印p点的坐标;

  while(p点有前趋){

    p点 = p点的前趋;

    打印p点的坐标;

  }

}else

  没有路线

 

 

 

相关文章:

  • 2021-10-24
  • 2021-05-26
  • 2021-07-01
  • 2021-05-30
  • 2021-07-10
猜你喜欢
  • 2021-11-25
  • 2021-12-29
  • 2021-09-04
  • 2021-11-17
  • 2022-01-03
  • 2021-10-31
相关资源
相似解决方案