1657 Distance on Chessboard[思维]:简洁思路
发布时间
阅读量:
阅读量
题目大意概述
国际象棋的棋盘由8乘8的黑白交替方格组成,棋子通常位于各个方格的中心位置。具体布局如图所示:
关于王、后、车、象的移动规则,具体说明如下:
王:可在横向、纵向以及对角线方向移动,但每次只能移动一格。
后:能够在横向、纵向及对角线方向自由移动,且步数不受限制。
车:仅限于横向与纵向移动,无法进行斜向移动,其行进距离无限制。
象:仅能沿对角线方向行进,步数同样没有限制。
请编写一个程序,输入初始坐标与目标坐标,计算王、后、车、象从初始位置到达目标位置所需的最少步数。
思路分析
最初考虑采用广度优先搜索的方式,若无法实现则尝试双向广度优先搜索,但冷静分析后发现问题并不复杂,实际上无需进行搜索操作。
设x = abs(s1[0] - s2[0]), y = abs(s1[1] - s2[1]);
- 王:依据其移动规则,他能够抵达任意位置,所需步数为:
max(x, y);,原因何在?例如从黑圈移动至黄圈时,若x=3、y=2,则通过x-y步即可抵达边长为y的正方形边界,之后沿对角线方向再走y步即可到达目标点,因此总步数为x-y+y=x步。

还没有任何评论哟~
