题目大意:
给你一个地图,地图中有三种元素,“.”代表空地,“x”代表墙,'1'->'9'代表怪兽,打怪兽的时间跟那个数字的时间是一致的。输入地图的长为c,宽为r,然后要求人从(0,0)走到(r-1,c-1),就是从地图的最左端走到最右端。求这个人的最短时间,还有打印出所走的路径。简单水题,唯一的亮点就是加上了一个打印路径。有点儿纠结~一开始
解题思路:
直接用优先队列+广搜搞,中途把点都放入一个map中,用二维数组来存放也可以,这里用了两种不同的方法,感觉用map,代码复杂度会低一点,但是时间复杂度可能更高。还有,用map要注意不要用原来的结构体,因为优先队列,原来的结构体排序上的运算符重载关系。存路径的时候,就是把下一个点的x,y作为二维数组的下标,然后当前点作为这个数组的值。结果就是,二维数组里面记录的是一个树,然后从末尾节点往回打印。就出现了一条路径了。要注意最后用栈让它按正常顺序打印出来。。
两种的时间都是15ms
代码:第一个代码用二维数组存路径
#include
#include
#include
#include