ПРИМЕЧАНИЕ. Это сложная задача для всех, кто любит проблемы с логикой и т. Д.
Рассмотрим прямоугольную двумерную сетку высотой H и шириной W. Каждое пространство в сетке имеет значение либо 0
1
, либо 2
. Первоначально каждый пробел в сетке равен 0
, за исключением пробелов вдоль каждого из четырех ребер, которые изначально являются 2
.
Затем рассмотрим произвольный путь соседних (по горизонтали или по вертикали) пространств сетки. Путь начинается в 2
и заканчивается в другом 2
. Каждое пространство вдоль пути - это 1
.
Путь делит сетку на два "сектора" из 0
пробелов. Есть объект, который находится в неопределенном 0
пространстве. «Сектор», который НЕ содержит объект, должен быть полностью заполнен 2
.
Определите алгоритм, который определяет пробелы, которые должны стать 2
из 0
, учитывая массив (список) значений (0
, 1
или 2
), которые соответствуют значениям в сетка, идущая сверху вниз, а затем слева направо. Другими словами, элемент с индексом 0 в массиве содержит значение верхнего левого пространства в сетке (первоначально a 2
). Элемент с индексом 1 содержит значение пространства в сетке, которое находится в левом столбце, второе сверху и т. Д. Элемент с индексом H содержит значение пространства в сетке, которое находится в верхней строке, но второй слева, и т. Д.
Как только алгоритм завершится и пустой «сектор» заполнится полностью 2
с, ЖЕ алгоритма должно быть достаточно, чтобы повторить тот же процесс снова. Во второй (и включенный) раз путь все еще рисуется от 2
к другому 2
через пробелы 0
, но «сетка» меньше, потому что 2
s окружены другими 2
s не может быть затронут путем (так как путь проходит через пробелы 0
).
Я благодарю всех, кто в состоянии понять это для меня, очень и очень. Это не обязательно должно быть на конкретном языке программирования; на самом деле, псевдокод или просто английский достаточно. Еще раз спасибо! Если у вас есть какие-либо вопросы, просто оставьте комментарий, и я укажу, что нужно указать.