Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3540583
А
Аноним
28 декабря 2025 14:03 · публичный вопрос
А
Аноним

Появились первые ростки! Но некоторые расположены слишком близко друг к другу. Придётся проредить поле! В первой строке записано число N — число строк и столбцов квадратного поля.…

Запрос пользователя

Появились первые ростки! Но некоторые расположены слишком близко друг к другу. Придётся проредить поле! В первой строке записано число N — число строк и столбцов квадратного поля. Дальше записано поле по строкам. Каждая грядка состоит из символов ростка 🌱 или пустой земли 🟫. Определите, есть ли в поле хотя бы два ростка в соседних клетках (по горизонтали или по вертикали). В ответе выведите «нужно», если такие соседи есть и поле нужно проредить, и «не нужно», если нет. Например, это поле нужно проредить: 🟫🌱 🟫🌱 А это — не нужно (соседи по диагонали не считаются): 🌱🟫 🟫🌱

Ответ нейросети
28 декабря 2025 14:03

Задача понятна. Нужно проверить, есть ли в квадратном поле хотя бы две соседние по горизонтали или вертикали клетки, содержащие росток 🌱. Если такие пары есть — вывести "нужно", иначе "не нужно". Диагональные соседи не учитываются.

Пошаговый план решения

  • Считать N и затем N строк поля. Каждая строка имеет N символов: 🌱 или 🟫.
  • Пройти по всем клеткам поля:
    • Если текущая клетка содержит 🌱, проверить правого соседа (если есть) и нижнего соседа (если есть).
    • Если любой сосед тоже 🌱, вывести "нужно" и завершить программу.
  • Если пары не найдены после полного обхода, вывести "не нужно".

Время работы: O(N^2) — проверяем каждую клетку и максимум два соседа. Память: O(N^2) для хранения поля (если хранить всё поле).

Пример проверки на примерах

  • Пример 1: 2 🟫🌱 🟫🌱 Есть вертикальные соседние 🌱 в столбце 2 -> ответ "нужно".
  • Пример 2: 2 🌱🟫 🟫🌱 Единственные 🌱 — по диагонали, соседей по горизонтали/вертикали нет -> ответ "не нужно".

Пример кода на Python 3 (UTF-8)

  • Код читает вход, обходит клетки и ищет соседей по горизонтали и вертикали.
def main():
    import sys
    data = sys.stdin.read().splitlines()
    if not data:
        print("не нужно")
        return
    N = int(data[0].strip())
    grid = []
    for i in range(1, 1 + N):
        line = data[i].strip()
        # удаляем возможные пробелы, если ввод содержит их между символами
        line = line.replace(" ", "")
        grid.append(line)

    for i in range(N):
        for j in range(N):
            if grid[i][j] == '🌱':
                # проверить правого соседа
                if j + 1 < N and grid[i][j + 1] == '🌱':
                    print("нужно")
                    return
                # проверить нижнего соседа
                if i + 1 < N and grid[i + 1][j] == '🌱':
                    print("нужно")
                    return

    print("не нужно")

if __name__ == "__main__":
    main()

Пояснения по коду

  • Сначала читаем N и далее N строк поля. Удаляем пробелы, чтобы корректно работать с символами-эмоджи.
  • Обходим каждую клетку; если нашли 🌱, смотрим соседей справа и снизу (если такие соседи существуют).
  • Как только найдём пару соседних 🌱, сразу выводим "нужно" и завершаем работу. Если обход окончен без таких пар, выводим "не нужно".

Если хочешь, могу привести альтернативный вариант на другом языке (например, C++ или Java) или адаптировать под конкретный формат входных данных.