Logic 在棋盘上计算对角线背后的逻辑是什么?
给定主教在8*8棋盘上的位置,任务是计算主教在一步中可以访问的方块总数。主教的位置用棋盘上的行数和列数表示 示例:Logic 在棋盘上计算对角线背后的逻辑是什么?,logic,chess,Logic,Chess,给定主教在8*8棋盘上的位置,任务是计算主教在一步中可以访问的方块总数。主教的位置用棋盘上的行数和列数表示 示例: 输入:行=4,列=4 产出:13 输入:行=1,列=1 输出:7 方法:在国际象棋比赛中,主教只能沿对角线移动,并且每一步的距离没有限制 所以,我们也可以说Bishop可以从当前位置以四种方式移动,即对角左上角、右上角、左下角和右下角 我们可以通过以下方法计算每次移动中访问的方块数: 左上移动中访问的总方块数=Math.min(r,c)–1 右上移动中访问的总方块数=Math.mi
输入:行=4,列=4
产出:13
输入:行=1,列=1
输出: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
是主教在棋盘上当前位置的坐标
伙计们,我无法理解上述对角线计算背后的逻辑。请帮我找出上面计算对角线的逻辑是什么???我只需要逻辑。不需要代码
(同样,如果你能帮助解决类似国际象棋问题或矩阵的基本逻辑,那将是非常棒的)
到电路板边缘的左上角距离确实是min(r,c)-1
。假设bishop从秩r
开始,它可以在到达第一秩之前向上移动不超过r-1
秩。如果c
,它可能会命中之前的第一个文件,在这种情况下,它只能移动c-1
方块。例如,如果bishop从r=5
和c=4
开始,它将能够移动三个正方形,而不是四个。因此,左上角的公式是min(r-1,c-1)
,可以重构为min(r,c)-1
类似地,当朝向左下角时,秩增加而文件减少。主教最多可以移动8-r
列,最多可以移动c-1
文件,因此左下角的公式是min(8-r,c-1)
。这可以被重构为8-max(r,9-c)
,尽管这个表达式看起来更复杂。只需将这个公式应用于任何方向:距离=max(abs(x1-x2),abs(y1-y2))很好的解释。