![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.10.2016
Сообщений: 11
|
![]()
Дано множество отрезков с целыми концами на прямой. Найти наибольшее количество отрезков с общей точкой.
L[i] < R[i] Пример: L = {0,0,1} R = {1,2,2} Ответ 3 |
![]() |
![]() |
![]() |
#2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
![]()
откуда 3? что-то не вижу 3х отрезков начинающихся\оканчивающихся в одной точке
|
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,374
|
![]()
А какие ограничения на множество отрезков и их координаты?
Как вариант: 1. Описать массив. 2. Заполнить массив, просматривая отрезки. Заполнение выполнить через инкремент. В нашем случае получим (максимальная координата отрезка 2) Код:
При некоторых ограничениях сработает, даже если отрезки не отсортированы по начальной координате. Как-то так, ...
Как-то так, ...
Последний раз редактировалось ViktorR; 23.11.2016 в 21:43. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,374
|
![]()
Другой алгоритм.
1. Некоторая переменная - координата пересечения отрезков x. N - количество отрезков, имеющих общую координату x, Max - максимум отрезков имеющих общую точку. 2. Отрезки отсортированы по начальной координате 3. Просматриваем отрезки. Если для отрезка с номером i Li <= x <= Ri, то N = N +1. 4. Как только Li > x сохраняем N в переменной Max при условии, что N >=Max. 5. x = x + 1 - сдвигаем точку на шаг вправо. 6. Переходим к п.3 7. После просмотра последнего отрезка Max содержит число отрезков с общей точкой. Как-то так, ...
Как-то так, ...
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,374
|
![]()
Реализация последнего алгоритма получилась такой:
Код:
То, что выделено (ниже Max := 0; ) - реализация алгоритма. Как-то так, ...
Как-то так, ...
Последний раз редактировалось ViktorR; 23.11.2016 в 23:30. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 230
|
![]() Код:
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,374
|
![]()
Пересмотрел свое решение.
Достаточно просматривать только заданные точки для концов отрезков. Сортировка тоже ненужное дело. Получилось коряво, но ... Код:
условие прерывания цикла. Как-то так, ...
Как-то так, ...
Последний раз редактировалось ViktorR; 24.11.2016 в 19:51. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Поскольку целые числа и, если разброс между левым концом самого левого отрезка и правым концом самого правого не миллиарды, то можно завести массив соответствующих размеров со счетчиками отрезков, включающих эти точки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите в написании | SrGars | Помощь студентам | 7 | 19.10.2013 15:32 |
Помогите в написании кода... | sobol556 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 23.03.2009 19:49 |
Помогите в написании пожалуйста: | SViRT | Паскаль, Turbo Pascal, PascalABC.NET | 15 | 07.10.2008 21:57 |