
- •Министерство образования и науки рф
- •Задания обычной сложности
- •Варианты усложнённых заданий
- •Варианты упрощённых заданий
- •Оглавление
- •Условие задачи
- •Способ решения
- •Принцип реализации. Описание констант, переменных, типов.
- •Общая структура программы.
- •Используемые процедуры и функции.
- •Модуль View
- •Головная программа
- •Текст программы
- •394000, Воронеж, пр. Революции, 19
Оглавление
Условие задачи.............................................................................
Способ решения...........................................................................
Принцип реализации...................................................................
Описание констант, переменных, типов................................
Общая структура программы..................................................
Используемые процедуры и функции.......................................
Модуль Stack.............................................................................
Процедура добавления элемента в стек (add)...................
Процедура извлечения элемента из стека (pop)...............
Модуль Graphic........................................................................
Модуль View.............................................................................
Головная программа................................................................
Текст программы.........................................................................
Файл с головной программой.................................................
Модуль STACK........................................................................
Модуль VIEW..........................................................................
Прогон программы......................................................................
Литература....................................................................................
Условие задачи
На плоскости задано N (1 < N < 300) прямоугольников со сторонами, параллельными координатным осям. Координаты вершин прямоугольников (х, у) - целые числа.
Найти площадь фигуры, получающейся в результате объединения прямоугольников.
Если в результате объединения прямоугольников получается больше одной фигуры, то выводить 0. Результат иллюстрировать графически.
Входные данные: пользователь считывает из файла информацию о прямоугольниках, а именно координаты верхнего левого и нижнего правого углов каждого из них.
Выход: прорисовка прямоугольников, рассчитанная площадь фигуры или 0, если фигур несколько.
Способ решения
Принцип решения заключается в следующем: плоскость разбивается на множество ячеек, соответствующих единичной площади. Эту площадь удобно представить в виде матрицы, элемент которой равен 1, если он является частью прямоугольника, и равен 0 в противном случае.
Пример расположения на плоскости двух прямоугольников (возможно и более, так как прямоугольники могут совпадать).
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
После создания такой матрицы необходимо заменить все соседние единицы двойками. И если после замены матрица еще будет содержать единицы, то это значит, что в результате объединения прямоугольников получается больше одной фигуры.
2 |
2 |
2 |
0 |
0 |
2 |
2 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
Площадь 0
Иначе количество двоек определяет площадь полученной фигуры.
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2 |
2 |
2 |
0 |
0 |
2 |
2 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Площадь полученной фигуры равна 6.