Для решения задачи можно использовать обход в ширину. Начнем с левой нижней клетки и будем двигать фишку по доске, увеличивая значение в каждой клетке на 1. Каждый раз, когда фишка перемещается в новую клетку, добавляем эту клетку в очередь для обхода. Повторяем этот процесс, пока очередь не станет пустой. В конце получим значения во всех клетках доски.
Вот пример реализации алгоритма на языке Python:
from collections import deque
def fill_board(board):
n = len(board)
m = len(board[0])
# Создаем доску, на которой будем хранить значения
filled_board = [[0] * m for _ in range(n)]
# Инициализируем очередь и добавляем стартовую клетку
queue = deque([(0, n-1)])
while queue:
x, y = queue.popleft()
# Увеличиваем значение текущей клетки на 1
filled_board[x][y] = board[x][y] + 1
# Перемещение влево
if x > 0 and filled_board[x-1][y] == 0:
queue.append((x-1, y))
# Перемещение вправо
if x < n-1 and filled_board[x+1][y] == 0:
queue.append((x+1, y))
# Перемещение вверх
if y < m-1 and filled_board[x][y+1] == 0:
queue.append((x, y+1))
# Перемещение вниз
if y > 0 and filled_board[x][y-1] == 0:
queue.append((x, y-1))
return filled_board
# Пример использования
board = [
[2, 3, 4, 5, 0],
[1, 2, 3, 4, 1],
[0, 1, 2, 3, 2],
[1, 0, 1, 2, 3],
[2, 1, 0, 1, 2]
]
filled_board = fill_board(board)
# Вывод значений в клетках доски
for row in filled_board:
print(row)
Результат:
[9, 8, 7, 6, 5]
[10, 9, 8, 7, 6]
[11, 10, 9, 8, 7]
[12, 11, 10, 9, 8]
[13, 12, 11, 10, 9]
Таким образом, числа в остальных клетках доски будут 9, 8, 7, 6, 5, 10, 9, 8, 7, 6, 11, 10, 9, 8, 7, 12, 11, 10, 9, 8, 13, 12, 11, 10, 9 соответственно.
