一道经典的BFS题目,细节很多,以后有机会再做一遍。
思路
相比较普通的BFS,这道题不同的是,每个交叉路口处,从哪个方向来,它是有确定的去的方向的。我们需要记录一下从东边来,直走行不行, 或者从东边来,左拐弯行不行。这就是代码中的hasedge。同时walk函数很简洁,记录了从哪边来到哪边去的最终的坐标变化。 记录我的几个错误点: BFS中忘了加Q.push. UVA中全局变量不能用y0,似乎以前师哥说过. print函数没有返回参数的话就是void,不能用int,这点我RE了无数次,看来还是得规范点. 再就是路径输出值得学习,用了p数组记录前驱,最终就是不断往前直到初始点。相比较递归打印路径,这个方法不会引起栈溢出,同时也很方便。
1 |
|