Задача Задача №3540307
А
А
Ниже подробное решение задачи на Python с пошаговым объяснением и готовым кодом.
Цель решения
- Нужно проверить, есть ли в квадратном поле хотя бы две соседние клетки с символом 🌱 (росток) по горизонтали или вертикали.
- Если такие соседи есть — вывести "нужно"; иначе — "не нужно".
План решения
- Считываем N и сам N×N квадрат field.
- Пробегаемся по каждой клетке. Если в текущей клетке символ 🌱, проверяем соседей справа и снизу (чтобы не проверять дублируя излишне).
- Если найдены соседние ростки — выводим "нужно" и завершаем программу.
- Если после обхода не найдено пары соседей — выводим "не нужно".
Сложности
- Время: O(N^2), потому что посещаем каждую клетку и проверяем максимум двух соседей.
- Память: O(N^2) для хранения поля (если хранить целиком).
Готовый код (Python)
def main():
import sys
# Считываем все строки входа
lines = sys.stdin.read().splitlines()
if not lines:
return
# Первый элемент — N
N = int(lines[0].strip())
# Далее N строк поля. Если строк оказалось короче, чем N, это.Input может быть некорректным.
field = []
for i in range(1, min(len(lines), N) + 1):
line = lines[i].rstrip("\n")
# Убираем возможные пробелы по краям, оставляя символы поля
line = line.strip()
# Безопасно превращаем в список символов
field.append(list(line))
# Если по somehow строк оказалось меньше N, добиваем пустыми сотнями (не обязятельно, но на случай некорректного ввода)
# Но корректный вход предполагает ровно N строк.
sprout = '🌱'
for i in range(N):
for j in range(N):
if field[i][j] == sprout:
# Проверяем соседа справа
if j + 1 < N and field[i][j + 1] == sprout:
print("нужно")
return
# Проверяем соседа снизу
if i + 1 < N and field[i + 1][j] == sprout:
print("нужно")
return
print("не нужно")
if __name__ == "__main__":
main()
Пример использования
- Ввод: 3 🌱🟫🌱 🟫🌱🟫 🟫🟫🌱
- Вывод: не найдено соседних ростков по горизонтали/вертикали, значит "не нужно".
Дополнительные заметки
- Вход может содержать эмодзи. Убедитесь, что вход кодируется в UTF-8 (обычно так и есть в современных системах и на онлайн-платформах).
- Если нужно, можно дополнительно robust сделать чтение: проверить длину каждой строки и обрабатывать случаи с пробелами между символами — но в задании предполагаются ровно символы ростка или пустой земли без разделителей.