用 Python 编写程序,找出国际象棋骑士到达目标位置的最少步数
pythonserver side programmingprogramming
假设我们有两个值 r 和 c。如果国际象棋骑士被放置在无限大棋盘的起始坐标 (0, 0) 处,我们必须找出到达位置 (r, c) 所需的最少移动次数。骑士将遵循与国际象棋相同的移动方式。它会水平移动两个方格,垂直移动一个方格,或者垂直移动两个方格,水平移动一个方格。
因此,如果输入为 r = 6、c = 1,则输出为 3,红色为初始位置,绿色为最终位置,黄色为中间步骤。

为了解决这个问题,我们将遵循以下步骤 −
- if r < c,则
- 交换 r 和 c
- 如果 (r, c) 与 (1, 0) 相同,则
- 返回 3
- 如果 (r, c) 与 (2, 2) 相同,则
- 返回 4
- delta := r - c
- 如果 c > delta,则
- 返回 delta - 2 *((delta - c) / 3 的商)
- 否则,
- 返回 delta - 2 *((delta - c) / 4 的商)
让我们看看下面的实现以便更好地理解 −
示例
class Solution: def solve(self, r, c): if r < c: r, c = c, r if (r, c) == (1, 0): return 3 if (r, c) == (2, 2): return 4 delta = r - c if c > delta: return delta - 2 * ((delta - c) // 3) else: return delta - 2 * ((delta - c) // 4) ob = Solution() r = 6 c = 1 print(ob.solve(r, c))
输入
6, 1
输出
3
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

