题目要求如下:给定一个由加号和减号构成栅栏的迷宫,每个迷宫有两个出口。输入迷宫的宽度W(1≤W≤38)和高度H(1≤H≤100),随后输入2H+1行,每行包含2W+1个字符。需要找出迷宫中距离出口最远的点,并计算从该点走出迷宫所需的最少步数。
1、 这道题让我卡了很久,问题出在输入有误,归根结底还是基础不够扎实。以下是修正后的输入部分。
2、 变量w用于标记位置i行j列是否为障碍,0表示障碍,1表示可通过的通道。
3、 s代表从起点到第i行第j列位置的最短路径长度。
4、 比较偷懒,直接采用递归实现,从两个起点分别进行搜索。初始时将数组s全部设为100000,此前因数值过小导致未通过。为优化效率,加入剪枝策略:在搜索位置(i,j)时,若当前路径长度不小于已记录值,则停止扩展;否则更新记录。以下是状态转移方程的具体描述。
5、 需注意:记录的s并非实际步数,而是(步数+1)除以2,这一点容易出错,我之前也弄错过。
6、 这是我的代码示例
7、 }
8、 }
9、 }
10、 }
11、 }
12、 }
13、 {
14、 }
15、 }
16、 }
17、 }
18、 }
19、 }
20、 FF{
21、 }
22、 }
23、 }
