问腾讯笔试的一道题
今天腾讯笔试
有一道题,描述如下:
已知网格,用map[i][j]指代其中的各个点,0<=i,j<=1000
现在定义如下内容:
map[i][j]=0代表空地,
map[i][j]=1代表妖怪地点,
map[i][j]=2代表障碍物。
给你一张网格map,里面已经赋值0,1,2,
给你一个初始点(x,y)
请找出杀死所有妖怪的最短路径。
你可以从上下左右,左上,左下,右上,右下八个方向移动,无法越过障碍物。
对于图论算法我并不熟悉,所以我想到的就是回溯法,但这样复杂度很高,而且优化起来感觉很难,因为
有障碍物,感觉神马情况都有可能。
我只能根据回溯法先算出所有妖怪地点两两之间的最短路径,然后再次根据回溯法找到从(x,y)经过所有节点的路径,
本人很挫,望大家指点