Учитывая положение епископа на шахматной доске 8 * 8, задача состоит в том, чтобы подсчитать общее количество квадратов, которые епископ может посетить за один ход. Позиция епископа обозначается номером строки и столбца шахматной доски.
Примеры:
Input: Row = 4, Column = 4
Output: 13
Input: Row = 1, Column = 1
Output: 7
Подход: в игре в шахматы епископ можетдвигаться только по диагонали, и для каждого хода нет ограничений по расстоянию.
Итак, мы также можем сказать, что епископ может двигаться четырьмя способами, то есть по диагонали вверх слева, сверху справа, снизу слева и снизу справа от текущей позиции.
Мы можем вычислить количество квадратов, посещенных в каждом движении:
Всего квадратов, посещенных в верхнем левом ходу = Math.min(r, c) – 1
Всего квадратов, посещенных в верхнем правом движении =Math.min(r, 9 – c) – 1
Общее количество квадратов, посещенных в нижнем левом ходу = 8 – Math.max(r, 9 – c)
Общее количество квадратов, посещенных в нижнем правом движении = 8 – Math.max(r, c)
где, r
и c
- это координаты текущей позиции епископа на шахматной доске.
Ребята Я не могу понять логику вышеупомянутых диагональных вычислений. Пожалуйста, помогите мне выяснить, по какой логике вычисляются диагонали выше ??? Мне просто нужна логика. Код не требуется.
(Также, если вы можете помочь с основной логикой подобных видов шахматных задач или матриц, это было бы здорово)
Изображение шахматной доски для справки