上QQ阅读APP看书,第一时间看更新
例55 矩阵走路问题
1. 问题描述
给定一个m行、n列,由0和1组成的矩阵,1是墙,0是路,现在可以把矩阵中的一个1变成0,本例将判断从左上角走到右下角是否有路可走;如果有路可走,最少要走多少步?
2. 问题示例
给定矩阵A=[[0,1,0,0,0],[0,0,0,1,0],[1,1,0,1,0],[1,1,1,1,0]],返回7。将(0,1)处的1变成0,最短路径为:(0,0)→(0,1)→(0,2)→(0,3)→(0,4)→(1,4)→(2,4)→(3,4),其他长度为7的方案还有很多,这里不一一列举。给定A=[[0,1,1],[1,1,0],[1,1,0]],返回-1,不管把哪个1变成0,都没有可行的路径。
3. 代码实现
4. 运行结果
地图是:[[0,1,0,0,0]、[0,0,0,1,0]、[1,1,0,1,0]、[1,1,1,1,0]]
最少要走:7