![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.05.2012
Сообщений: 24
|
![]()
Помогите пожалуйста
1)Заданы вещественные числа a[1],b[1], a[2],b[2], ..., a[n],b[n]. Пары чисел (a[i],b[i]) - это левые и правые концы окрашенных отрезков на одной прямой (a[i]=<b[i]). Некоторые из этих отрезков частично или полностью перекрывают друг друга. Найти наиболее длинный окрашенный отрезок прямой. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Может уже сам начнешь что-то делать? С той энергией, с которой ты сюда задачи постишь, уже можно десяток программ написать.
Алгоритм простой: 1. Заводишь два одинаковых (то есть одноразмерных и однотипных) массива a и b 2. Делаешь цикл от 1 до n (размерность массива) и ищешь, при каком i разность b[i]-a[i] наибольшая. 3. Выводишь элементы a[i] и b[i] на экран.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Sciv, всё далеко не так просто.
отрезки могут накладываться друг на друга! например, даны отрезки 10-14, 1-4, 3-6 ответ: наиболее длинный отрезок длиной 6 (от 1 до 6 ) наверняка, можно придумать много алгоритмов решения. Я тут на форуме решал (полностью) аналогичную задачу с пересекающимися прямоугольниками, лежащими на одной прямой. нужно отсортировать отрезки по левым сторонам и дальше уже перебирать отрезки, считать суммарную длину полученной окрашенной линии (хранить LeftColored и RightColored - границы окрашенного участка) до тех пор, пока левая граница следующего отрезка пересекается с получаемым отрезком. Если нет пересечений - начинаем обрабатывать новый окрашенный участок. При всех этих действиях ищем максимальное значение окрашенного участка (т.е. взяли очередной отрезок - проверили, пересекает ли он окрашенный участок, полученный на предыдущей итерации цикла, если да, нашли новую общую длину окрашенного участка, если она больше MaxColorLineLength - присвоили переменной новое значение. Всё просто. ![]() |
![]() |
![]() |
![]() |
#4 | |||
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]() Цитата:
Цитата:
Цитата:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|||
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Sciv
я же привёл пример... ладно. попытаюсь ещё раз. пусть n=3 массив A = (10, 1 ,3); {координаты левых границ отрезков} массив B = (14, 4, 6); {координаты правых границ отрезков} Цитата:
![]() наиболее длинный окрашенный отрезок прямой (прямая - это координатная линия, на которой находятся все наши заданные отрезки (с пересечениями и объединённиями)) будет от точки 1 до точки 6. p.s. если вы возьмете линию. на ней цветным карандашом (или маркером) нарисуете заданные отрезки, и посмотрите, как прямая будет раскрашена, думаю, у вас не возникнет вопрос, что такое "наиболее длинный окрашенный отрезок прямой" ![]() |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Вашу мысль я прекрасно понимаю, но мы говорим о разных вещах. Дело в том, что я имею в виду то, что каждый отрезок с парой координат окрашен в свой цвет и найти надо наиболее длинный одного конкретного цвета, а не вообще смешанный из нескольких разноцветных перекрывающихся отрезков.
![]() P.S. А почему не от 1 до 14? P.P.S. Не надо объяснять, уже сам понял. ![]()
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Паскаль. Матрица NxN -> текстовый файл -> Матрица NxN - найти max по диагоналям -> типизированный файл | Лунатик13 | Помощь студентам | 1 | 20.02.2012 15:54 |
Непонятки с DirectX (матрица поворота, камера, матрица проекции) | ROD | Общие вопросы C/C++ | 2 | 17.09.2010 17:00 |
Матрица в Си | iggor | Помощь студентам | 6 | 07.12.2009 01:24 |
TurboPascal: граф, матрица смежности и матрица инцидентности. | ulala | Помощь студентам | 0 | 02.12.2009 10:11 |