思路 总体思路是用BFS找最短路 由于拿到钥匙和没拿到钥匙两种状态对应的地图的形态不一样 拿到钥匙时'D'可以通过,因此可以看作'.' 可以从分层图的角度考虑问题,第一层地图是没拿到钥匙的地图,第二层地图是拿到钥匙的地图。 BFS遇到钥匙时,不仅要在第一层图的四个方向继续尝试搜索,还要将第二层地图的'K'位置放入队列中(相当于在第二层图上开始BFS,向队列中放入第一个节点的步骤) 代码 #include<iostream> #include<queue> #include<cstring> using namespace std; const in...