Я только начал решать проблемы и наткнулся на этот вопрос. Не могу понять алгоритм. В 1-м квадранте прямоугольных координат есть разные точки и линии. Линии (окна) являются пареллами к оси X или оси Y. Линия (окно) формируется путем объединения двух заданных точек, а линии (Окно) не пересекаются друг с другом. Огонь начинает распространяться снаружи и линия (окно) с огнем на одной стороне, и никакой огонь на другой стороне не сломается. Выход - это общее количество безопасных строк (окон). координаты x, y варьируются от 0 до 10000. Мой подход заключается в использовании рекурсии. Эти изображения могут дать лучшее понимание: Изображение показывает состояние во время = 0 Изображение 2 показывает состояние после того, как внешние окна разбиты Изображение 3 показывает конечное состояние
fn(windows[])
{
if window is part of outermost_loop
window is broken
if (no of windows remaining == no of windows from prev iteration)
{
break;
}
else
{
fn(remaining_windows[]);
}
}
Есть ли способ выяснить, находится ли окно в самом внешнем цикле.