现有一个下标从 1 开始的 8 x 8
棋盘,上面有 3
枚棋子。
给你 6
个整数 a
、b
、c
、d
、e
和 f
,其中:
(a, b)
表示白色车的位置。(c, d)
表示白色象的位置。(e, f)
表示黑皇后的位置。
假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。
请注意:
- 车可以向垂直或水平方向移动任意数量的格子,但不能跳过其他棋子。
- 象可以沿对角线方向移动任意数量的格子,但不能跳过其他棋子。
- 如果车或象能移向皇后所在的格子,则认为它们可以捕获皇后。
- 皇后不能移动。
class Solution: def minMovesToCaptureTheQueen(self, a: int, b: int, c: int, d: int, e: int, f: int) -> int: # m 在 l 和 r 之间(写不写等号都可以) def in_between(l: int, m: int, r: int) -> bool: return min(l, r) < m < max(l, r) # 车直接攻击到皇后 or 象直接攻击到皇后 if a == e and (c != e or not in_between(b, d, f)) or \ b == f and (d != f or not in_between(a, c, e)) or \ c + d == e + f and (a + b != e + f or not in_between(c, a, e)) or \ c - d == e - f and (a - b != e - f or not in_between(c, a, e)): return 1 return 2
标签:return,int,捕获,20241205,棋子,3001,between,皇后,移动 From: https://www.cnblogs.com/xxlm/p/18589632