美文网首页
【教3妹学编程-算法题】捕获黑皇后需要的最少移动次数

【教3妹学编程-算法题】捕获黑皇后需要的最少移动次数

作者: 程序员小2 | 来源:发表于2024-02-13 16:36 被阅读0次
    瑟瑟发抖

    3妹:2哥,新年好鸭~
    2哥 : 新年好,3妹这么早啊
    3妹:是啊,新年第一天要起早,这样就可以起早一整年
    2哥 :得,我还不了解你,每天晒到日上三竿
    3妹:嘿嘿嘿嘿,一年是有300多天起的比较晚~
    2哥:3妹,过完年什么时候回来啊
    3妹:最少也要初七吧,好不容易回家一趟多陪陪父母。
    2哥:好吧,回家也也要记得每天刷题啊,今天有一道“最少”的题目, 让我们先做一下吧~

    吃瓜

    题目:

    现有一个下标从 1 开始的 8 x 8 棋盘,上面有 3 枚棋子。

    给你 6 个整数 a 、b 、c 、d 、e 和 f ,其中:

    (a, b) 表示白色车的位置。
    (c, d) 表示白色象的位置。
    (e, f) 表示黑皇后的位置。
    假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。

    请注意:

    车可以向垂直或水平方向移动任意数量的格子,但不能跳过其他棋子。
    象可以沿对角线方向移动任意数量的格子,但不能跳过其他棋子。
    如果车或象能移向皇后所在的格子,则认为它们可以捕获皇后。
    皇后不能移动。

    示例 1:


    image.png

    输入:a = 1, b = 1, c = 8, d = 8, e = 2, f = 3
    输出:2
    解释:将白色车先移动到 (1, 3) ,然后移动到 (2, 3) 来捕获黑皇后,共需移动 2 次。
    由于起始时没有任何棋子正在攻击黑皇后,要想捕获黑皇后,移动次数不可能少于 2 次。
    示例 2:


    image.png

    输入:a = 5, b = 3, c = 3, d = 4, e = 5, f = 2
    输出:1
    解释:可以通过以下任一方式移动 1 次捕获黑皇后:

    • 将白色车移动到 (5, 2) 。
    • 将白色象移动到 (5, 2) 。

    提示:

    1 <= a, b, c, d, e, f <= 8
    两枚棋子不会同时出现在同一个格子上。

    思路:

    思考

    设 nums\textit{nums}nums 的异或和为 sss。

    分类讨论:

    如果车能直接攻击到皇后,答案是 1。
    如果象能直接攻击到皇后,答案是 1。
    如果车被象挡住,那么移走象,车就可以攻击到皇后,答案是 2。小知识:这在国际象棋中称作「闪击」。
    如果象被车挡住,那么移走车,象就可以攻击到皇后,答案是 2。
    如果车不能直接攻击到皇后,那么车可以水平移动或者垂直移动,其中一种方式必定不会被象挡住,可以攻击到皇后,答案是 2。
    对于车,如果和皇后在同一水平线或者同一竖直线,且中间没有象,那么就可以直接攻击到皇后。

    java代码:

    public class Solution {
        public int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {
            if (a == e && (c != e || ok(b, d, f)) ||
                b == f && (d != f || ok(a, c, e)) ||
                c + d == e + f && (a + b != e + f || ok(c, a, e)) ||
                c - d == e - f && (a - b != e - f || ok(c, a, e))) {
                return 1;
            }
            return 2;
        }
    
        private boolean ok(int l, int m, int r) {
            return m < Math.min(l, r) || m > Math.max(l, r);
        }
    }
    

    相关文章

      网友评论

          本文标题:【教3妹学编程-算法题】捕获黑皇后需要的最少移动次数

          本文链接:https://www.haomeiwen.com/subject/danjadtx.html