上课代码
  1. 深度优先搜索
上课代码
  • 深度优先搜索
    • 11月2日星期天 9:00-12:00
  • 并查集
    • 11月1日星期六9:00-12:00
    • 11月1日星期六18:30-21:00
  1. 深度优先搜索

11月2日星期天 9:00-12:00

S07L01扫地机器人#

描述#

Mike同学在为扫地机器人设计一个在矩形区域中行走的算法,Mike是这样设计的:先把机器人放在出发点(1,1)点上,机器人在每个点上都会沿用如下的规则来判断下一个该去的点是哪里。规则:优先向右,如果向右不能走(比如:右侧出了矩形或者右侧扫过了)则尝试向下,向下不能走则尝试向左,向左不能走则尝试向上;直到所有的点都扫过。
Mike为了验证自己设计的算法是否正确,打算先模拟一下这个算法,每当机器人走过一个单元格时,会在单元格内标记一个数字,这个数字从1开始,每经过一个单元格数字会递增1,直到所有的单元格都扫一遍,也就是所有的单元格都标记过数字,机器人会自动停止。
比如:如果机器人按照上面的规则,清扫一个3 * 4大小的矩形区域,那么标记数字的结果如下图所示。
企业微信截图_17049852319753.png
再比如:如果机器人按照上面的规则,清扫一个5 * 5大小的矩形区域,那么标记数字的结果如下图所示。
企业微信截图_17049853636115.png
请你帮助Mike设计一个程序,按照上面的规则,将一个n * m大小的矩形,标记一下数字,输出最终标记的结果。

输入描述#

一行内有2个两个整数n和m,用空格隔开,分别代表矩形区域的行数(高)和列数(宽)(n和m都是2~9之间的整数)

输出描述#

输出按题意机器人走过每个点之后,标记数字的结果,每个数字输出时场宽设置为3。

用例输入 1#

3 4

用例输出 1#

  1  2  3  4
 10 11 12  5
  9  8  7  6

S07L02 迷宫出口#

描述#

一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,0和1,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为1),则看成无法办到。

输入描述#

第1行是一个正整数n (1 ≤ n ≤ 100),表示迷宫的规模是n * n的。接下来是一个n * n的矩阵,矩阵中的元素为0或者1。再接下来一行是4个整数ha la hb lb,描述A处在第ha行 第la列,B处在第hb行 第lb列。

输出描述#

能办到则输出“YES”,否则输出“NO”。

用例输入 1#

3
0 1 1
0 0 1
1 0 0
1 1 3 3

用例输出 1#

YES

代码#

分析: 0 代表可以走 1表示障碍物不能走 并且只能往东南西北四个方向走,不能斜着走
能否从起点(a)走到终点(b) 用深度优先搜索 往下面走 走过的点标记为障碍物 不能在走,

作业:#

S07L03【基础】数池塘(四方向)#

修改于 2025-11-01 17:16:24
下一页
11月1日星期六9:00-12:00
Built with