Задача № 1 Робот находится где-то в прямоугольнике. Он должен закрасить исходную клетку, если закрашены клетка над ней и клетка под ней.
Ответ нейросети
18 января 2026 14:03
Задача понятна: робот стоит в какой-то клетке прямоугольника и должен закрасить текущую клетку только в том случае, если клетки над ней и под ней уже закрашены.
Пошаговое решение
- Условия
- Пусть клетка робота находится в координатах (i, j) в матрице/grid.
- Над ней — клетка (i-1, j), под ней — клетка (i+1, j).
- Чтобы закрасить текущую клетку, должны быть выполнены оба условия: клетка над ней закрашена и клетка под ней закрашена.
- Граница: если робот на верхней строке (i = 0) или на нижней строке (i = R-1), такой условия нет, поэтому закрашивать не будем.
- Алгоритм
- Проверяем границы: i-1 >= 0 и i+1 < R.
- Если обе клетки над и под существуют и обе закрашены (значения 1), то закрашиваем текущую клетку (устанавливаем G[i][j] = 1).
- Иначе остаём как есть (не закрашиваем текущую клетку).
- Псевдокод
- вход: сетка G размером R x C, положение робота (i, j)
- если i-1 >= 0 и i+1 < R и G[i-1][j] == 1 и G[i+1][j] == 1: G[i][j] = 1
- результат: обновлённая сетка
- Пример Допустим, сетка 5x3 (R=5, C=3), робот на клетке (2, 0) (третья строка, первый столбец). Исходная сетка (1 — закрашено, 0 — пусто):
Row0: [1, 0, 0] Row1: [1, 0, 0] Row2: [0, 0, 0] <- робот здесь (i=2, j=0) Row3: [1, 0, 0] Row4: [0, 0, 0]
Для клетки (2,0) над ней G[1][0] = 1 и под ней G[3][0] = 1, значит условие выполняется и робот закрасит текущую клетку.
После выполнения: Row0: [1, 0, 0] Row1: [1, 0, 0] Row2: [1, 0, 0] <- закрашена Row3: [1, 0, 0] Row4: [0, 0, 0]
- Код (простая реализация на Python-подобном псевдокоде)
- Функция, решающая для одной клетки: def should_paint(grid, i, j): R = len(grid) if i - 1 >= 0 and i + 1 < R: return grid[i-1][j] == 1 and grid[i+1][j] == 1 return False
def apply_rule(grid, i, j): if should_paint(grid, i, j): grid[i][j] = 1 return grid
- Прямое решение для одной задачи: grid = [ [1, 0, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0], [0, 0, 0], ] i, j = 2, 0 # положение робота grid = apply_rule(grid, i, j)
grid теперь содержит закрашенную клетку в (2,0)
- Важные моменты
- Граница: при i = 0 или i = R-1 условие не выполняется, потому что верхней или нижней соседей не существует.
- Если исходно клетка над или под роботом не закрашена, робот тоже ничего не делает.
- Время выполнения для одной клетки O(1); для всей сетки — O(R*C) при необходимости проверить каждую клетку.
Если хочешь, могу привести аналогичный пример на другой размерности сетки или переписать решение на любом языке программирования (Java, C++, JavaScript и т.д.).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



