欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > leetcode 3001. 捕获黑皇后需要的最少移动次数 中等

leetcode 3001. 捕获黑皇后需要的最少移动次数 中等

2025/11/4 4:26:53 来源:https://blog.csdn.net/2401_88085478/article/details/144270150  浏览:    关键词:leetcode 3001. 捕获黑皇后需要的最少移动次数 中等

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

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

  • (a, b) 表示白色车的位置。
  • (c, d) 表示白色象的位置。
  • (e, f) 表示黑皇后的位置。

假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。

请注意

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

示例 1:

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

示例 2:

输入: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
  • 两枚棋子不会同时出现在同一个格子上。

分析:简单的模拟。重点是想清楚什么情况只需要一步就可以捕获皇后,其它情况都需要2次。

1、车与皇后处在同一行或者同一列,且象没有夹在车和皇后之间

2、象和皇后处在同意斜线,且车没有处在象和皇后的连线上

int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {if(a==e)//同一行{if(c!=e)return 1;else{if((int)fabs(b-f)<(int)fabs(d-f)||(int)fabs(b-f)<(int)fabs(d-b))return 1;else return 2;}}if(b==f)//同一列{if(d!=f)return 1;else{if((int)fabs(a-e)<(int)fabs(c-e)||(int)fabs(a-e)<(int)fabs(c-a))return 1;else return 2;}}if((int)fabs(c-e)==(int)fabs(d-f))//同一斜线{int temp=(int)fabs(c-e);if((int)fabs(c-a)!=(int)fabs(d-b)||(f-d)/(e-c)!=(c-a)/(d-b))return 1;if((int)fabs(c-a)>temp||(int)fabs(e-a)>temp)return 1;}return 2;
}

版权声明:

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

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

热搜词