2017-01-21 13 views
2

У нас есть множество интервалов [angle1,angle2]. Я хочу узнать оптимальное значение theta [-180,180], которое лежит в максимальном числе интервалов. Значение theta может быть плавающим. Я попытался с линейным поиском и проверить все интервалы, но поскольку значение тета может быть плавающим, я думаю, что даже бинарный поиск не может работать.Сегмент Interval Поиск

+0

Двоичный поиск работает абсолютно нормально на поплавках ... –

+0

Вы можете уточнить немного больше? Что вы подразумеваете под «максимальным интервалом»? – Rishav

+0

@ cricket_007 Я согласен, что бинарный поиск абсолютно работает на поплавках, но в контексте проблемы, как мы можем применить двоичный поиск, не могли бы вы рассказать о нем. –

ответ

3

Сортируйте начальные и конечные значения интервалов в один список с соответствующим значением для «S» или «E» для каждого из них.

Просмотрите список, когда вы нажмете приращение S счетчика, когда вы нажмете на E декремент счетчика. Если счетчик выше, чем наибольшее значение, которое до сих пор помнит значения S и E для этого сегмента.

Для случая обертывания просто разделите каждый интервал, который обертывает (то есть угол2 < angle1) на две части, одну с обеих сторон от нуля. Добавьте [angle1,360] и [0, angle2] в качестве новых интервалов в стартовый набор.

+0

Спасибо @Ian Mercer Это выглядит хорошо для меня, я не могу поддержать ваш ответ, но он, безусловно, решит мою проблему. Как только у меня будет достаточно рейтинга, я отвечу на ваш ответ. –

+0

будет работать как для формата [0,360], так и [-180,180]? –

+0

Он будет работать для обоих, но он не обрабатывает обертку вокруг футляра ... пока ... –

 Смежные вопросы

  • Нет связанных вопросов^_^