Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2013, 16:11   #1
Daniel0K
Новичок
Джуниор
 
Регистрация: 17.02.2013
Сообщений: 2
По умолчанию Как определить отрезок, пересекающий наибольшее количество прямоугольников

Суть такова, есть n прямоугольников со сторонами, параллельными осям координат, заданных координатами своей левой верхней и правой нижней вершин, и m отрезков, заданных координатами своих концов. Нужно определить отрезок, пересекающий наибольшее количество прямоугольников
Не могу придумать единое условие для определения таких отрезков. Есть идеи?
Daniel0K вне форума Ответить с цитированием
Старый 17.02.2013, 16:45   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Что такое "определение отрезков"?
Тип данных для представления отрезка?
В таком случае отрезок определяется через две точки, т.е. вводим структуру - вектор, а потом - отрезок, состоящий из двух векторов.
s-andriano вне форума Ответить с цитированием
Старый 17.02.2013, 16:57   #3
Daniel0K
Новичок
Джуниор
 
Регистрация: 17.02.2013
Сообщений: 2
По умолчанию

Опеределение? т.е. мне нужно найти координаты конца и начала такого отрезка.
координаты вещественные.
Я с помощью записей сделал массивы координат прямоугольников и отрезков, а вот как дальше применить ...
Daniel0K вне форума Ответить с цитированием
Старый 17.02.2013, 17:38   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Не понял.
Зачем искать то, что задано по условию задачи?
s-andriano вне форума Ответить с цитированием
Старый 17.02.2013, 18:00   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Например, простой перебор.
1. Пишем функцию, которая определяет пересекаются ли два отрезка.
а) Решение системы двух линейных уравнение
б) Проверка, что точка пересечения, если таковая найдена,
принадлежит одному из отрезков.

2. В цикле 1:
Берём отрезок
В цикле 2:
Для каждого прямоугольника готовим 4-е уравнения.
Если есть пересечение, то +1 и выходим из цикла.
// Для прямоугольника достаточно обнаружить одно пересечение
Конец цикла 2;
Конец цикла 1;

3. Полученный массив, в котором есть координаты отрезков и число пересечений просматриваем на поиск максимума пересечений.


Ну, как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив. Определить количество прямоугольников образованных числом 1. alekcey0211 Паскаль, Turbo Pascal, PascalABC.NET 2 28.11.2012 17:03
Как обнулить элементы строки двумерного массива, содержащей наибольшее количество элементов одномерного массива griignat Помощь студентам 1 22.11.2011 20:04
Характеристикой строки назовем наибольшее количество.. Bizikov Помощь студентам 1 26.05.2011 22:24
Задача на работу с двумерным массивом.Найти количество прямоугольников. anta Общие вопросы C/C++ 6 05.01.2009 15:23