【发布时间】:2019-10-22 07:14:45
【问题描述】:
给定一个主教在一个 8 * 8 棋盘上的位置,任务是计算一个主教在一次移动中可以访问的方格总数。主教的位置用棋盘的行号和列号表示。
例子:
Input: Row = 4, Column = 4
Output: 13
Input: Row = 1, Column = 1
Output: 7
做法:象棋棋局中,象只能沿对角线走,每走一步没有距离限制。
所以,我们也可以说 Bishop 可以以四种方式移动,即从当前位置对角线左上角、右上角、左下角和右下角。
我们可以通过以下方式计算每次移动中访问的方格数:
左上移动访问的总方块 = Math.min(r, c) – 1
右上角移动中访问的总方块 = Math.min(r, 9 – c) – 1
左下移动访问的总方块 = 8 – Math.max(r, 9 – c)
右下移动访问的总方块 = 8 – Math.max(r, c)
其中r和c是主教在棋盘上当前位置的坐标。
伙计们,我无法弄清楚上述对角线计算背后的逻辑。请帮我找出上面计算对角线的逻辑是什么???我只需要逻辑。无需代码。
(另外,如果您能帮助了解类似国际象棋问题或矩阵的基本背后逻辑,那就太好了)
【问题讨论】: