leetcode-789 逃脱阻碍者

题意:你从原点可以选择左右上线或者不动 到target目标,但是,其他随时地区会有一些ghosts到target目标等着你,如果ghosts在你之前或者和你一起到,那你就将失败;否则成功

思路:

(1)题目和密室逃脱游戏不同点在于所有位置都可以走,那么从原点到target之间的最短距离就可以确定;

(2)点到点之间的最短距离公式当然是直线最短,不过,这个棋盘是不能走直线的;则使用曼哈顿具体作为衡量点到点之间的距离;

(3)分别原点和ghosts到target之间的距离,当ghosts到target任意一条都比原点到target距离短的话,则逃跑失败,返回false

bool escapeGhosts(vector<vector<int>>& ghosts, vector<int>& target) {
    //原点到target之间的距离;由于有负数,则需要使用abs
    int mydist = std::abs(target[0]) + std::abs(target[1]);
    for (int i = 0; i < ghosts.size(); i++) {
        //ghosts到target之间的曼哈顿距离
        int value = std::abs(ghosts[i][0] - target[0]) +  std::abs(ghosts[i][1] - target[1]);
        if (value <= mydist) {
            return false;
        }
    }
    return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值