欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > 【LeetCode】每日一题 2024_12_5 捕获黑皇后需要的最少移动次数(分类讨论)

【LeetCode】每日一题 2024_12_5 捕获黑皇后需要的最少移动次数(分类讨论)

2025/9/26 17:13:26 来源:https://blog.csdn.net/Locky136/article/details/144262749  浏览:    关键词:【LeetCode】每日一题 2024_12_5 捕获黑皇后需要的最少移动次数(分类讨论)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:捕获黑皇后需要的最少移动次数

代码与解题思路

先读题:题目给了三枚棋子,目标就是求出能在几步之内将皇后吃掉

具体的分类讨论见代码注释

核心思路:拿第一种情况的代码分析:a == e 代表白色车和黑皇后在同一行;c != a 代表白色象和白色车不在同一行,如果不在同一行,那就不需要管,直接返回 1 步,如果在同一行,那就继续往下判断;(d-b)*(d-f) > 0 代表如果白色象夹在白色车和黑皇后中间,两数相乘就会出现负数,这样车就无法一步吃皇后,如果不是夹在中间,那就返回 1 步

其他情况的解决思路同第一种情况

func minMovesToCaptureTheQueen(a int, b int, c int, d int, e int, f int) int {// (a, b) 表示白色车的位置。(c, d) 表示白色象的位置。(e, f) 表示黑皇后的位置。// 车走水平和垂直,象走斜线,棋盘中只有 3 枚棋子,判断车的时候看象有无阻挡即可,反之亦然// 1、白色车和黑皇后在同一行且中间没有其他棋子阻挡,一步吃皇后if a == e && (c != a || (d-b)*(d-f) > 0) {return 1}// 2、白色车和黑皇后在同一列且中间没有其他棋子阻挡,一步吃皇后if b == f && (d != b || (c-a)*(c-e) > 0) {return 1}// 3、白色象和黑皇后在对角线左上右下且无其他棋子阻挡,一步吃皇后if c-e == d-f && (a-e != b-f || (a-c)*(a-e) > 0) {return 1}// 4、白色象和黑皇后在对角线右上左下且无其他棋子阻挡,一步吃皇后if c-e == f-d && (a-e != f-b || (a-c)*(a-e) > 0) {return 1}// 如果车和象都不能一步吃皇后,之后无论怎么走,两步肯定能吃到return 2
}

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词