Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №66695
А
Аноним
28 ноября 2023 13:19 · публичный вопрос
А
Аноним

У Егора есть доска 5×5 , в каждой клетке которой изначально было написано число 0 . Он поставил фишку в левую нижнюю клетку и увеличил число в ней на 1 . Далее Егор перемещал фишку по доске, каждый раз переставляя в соседнюю по стороне клетку. После каждого перемещения Егор увеличивал число в клетке, в которой оказалась фишка, на 1 . После последнего перемещения фишка оказалась в правой верхней клетке доски. Числа, получившиеся в остальных клетках доски, указаны на рисунке.

Нейросеть28 ноября 2023 13:19

Для решения задачи можно использовать обход в ширину. Начнем с левой нижней клетки и будем двигать фишку по доске, увеличивая значение в каждой клетке на 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 соответственно.

У Егора есть доска 5×5 , в каждой клетке которой изначально было написано число 0 . Он поставил фишку в левую нижнюю клетку и увеличил число в ней на 1 . Далее Егор перемещал фишку по доске, каждый раз переставляя в соседнюю по стороне клетку. После каждого перемещения Егор увеличивал число в клетке, в которой оказалась фишка, на 1 . После последнего перемещения фишка оказалась в правой верхней клетке доски. Числа, получившиеся в остальных клетках доски, указаны на рисунке.
Для решения задачи можно использовать обход в ширину. Начнем с левой нижней клетки и будем двигать фишку по доске, увеличивая значение в каждой клетке на 1. Каждый раз, когда фишка перемещается в новую клетку, добавляем эту клетку в очередь для обхода. Повторяем этот процесс, пока очередь не станет пустой. В конце получим значения во всех клетках доски. Вот пример реализации алгоритма на языке Python: ```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 соответственно.