https://leetcode-cn.com/problems/escape-the-ghosts/
思路:一开始居然还傻乎乎的写了
b
f
s
bfs
bfs,其实就是思维类题目。显然无论是你还是阻碍者,到达目标点的距离即二者之间的曼哈顿距离,那么只要有一个阻碍者到终点的距离
<
=
<=
<=你到终点的距离,一定不可能逃脱成功,否则可以逃脱成功。
class Solution {
public:
using pr=pair<int,int>;
int calDis(int x1,int y1,int x2,int y2)
{
return abs(x1-x2)+abs(y1-y2);
}
bool escapeGhosts(vector<vector<int>>& ghosts, vector<int>& target) {
if(target[0]==0&&target[1]==0)
return 1;
int dis=calDis(0,0,target[0],target[1]);
for(vector<int>& ghost:ghosts)
{
int curDis=calDis(ghost[0],ghost[1],target[0],target[1]);
if(curDis<=dis)
return false;
}
return true;
}
};