前言
欢迎关注我(小周猪猪)的博客,同时也欢迎关注为你们讲解的乔治大佬(心畅)的博客。如果对于原来的考试,你有不会的题,可以参考数字游戏题解,搜索题解,递归地推题解或者更多讲课内容的笔记与讲解。
1.奇怪的机器人
看到这些方阵的题,我们便自然可以联想到用搜索来解决。但是实际上这道题可以同时用 DFS D F S 和 BFS B F S 来解决,这里采用较为简洁的 DFS D F S +剪枝(记忆化)的做法。
深搜的基本步骤:如果我们用 DFS D F S ,那么在递归的过程中我们可以用4个参数来记录当前走到的行,列和总花费。如果上一个状态是边界,那么直接判断答案是否合法,再退出即可。否则再在当前状态的基础上,往上下左右四个方向走,如果可以走,那么就往下一个状态进行转移。
你可以认为上述内容属于废话,因为许多棋盘上的题都是用这种思路来做的。涉及到上下左右,我们便可以用方位数组简便程序(在程序中用 dx d x 和 dy d y 表示),也用方位数组记录行走的花费(用数组 cost c o s t 表示)
但是你也可以知道,按照上述会出现大量非最优解,重复或多余的运算,我们可以考虑剪枝。
1 1 .如果参数的状态相同,我们可以退出。用