Максимальное количество клеток, атакованных ладьей или слоном на данной шахматной доске
Даны три целых числа N, R и C , обозначающие шахматную доску N*N , и позиция (R, C), в которой находятся ладья и слон. Задача состоит в том, чтобы выяснить, кто может атаковать наибольшее количество клеток (кроме клетки, в которой они находятся) и сколько.
Примечание:
- Ладья может двигаться только по горизонтали по ряду или по вертикали по столбцу и на любое количество клеток за раз
- Слон может ходить по диагонали на любое количество клеток за раз.
Примеры :
Input: N = 3, R = 2, C = 1
Output: Rook, 4
Explanation: Rook can attack 2 cells in the row and 2 cells along the column. So 2+2 = 4.
Bishop can attack only 2 cells (1, 2) and (3, 2).Input: N=1, R=1, C=1
Output: Both, 0
Подход : Проблема может быть решена следующим наблюдением:
A rook can move vertically upwards or downwards and horizontally to the left or to the right.
So total cells attacked by rook = (N – 1) + (N – 1) = 2*(N – 1)A bishop can attack only diagonally i.e., across the primary diagonal or the secondary diagonal.
So total number of cells attacked along the main diagonal is min(R-1, C-1) + min(N-R, N-C).
Total number of cells attacked along the secondary diagonal is min(R-1, N-C) + min(N-R, C-1)
Выполните следующие шаги, чтобы решить проблему:
- Найдите общее количество клеток, атакованных ладьей (скажем, X ), используя приведенную выше формулу.
- Найдите общее количество клеток, атакованных слоном (скажем, Y ), используя приведенную выше формулу.
- Проверьте, какой из них больше, и верните ответ соответственно.
Ниже приведена реализация вышеуказанного подхода:
Временная сложность : O(1)
Вспомогательное пространство : O(1)