Название: Поиск группы Отправлено: Igors от Февраль 18, 2013, 10:16 Добрый день
Есть исходный контейнер таких структур Код Нужно для заданного ключа (x0, y0, z0) найти все элементы c разницей по x, y, z не более чем +1 и не менее -1. Не гарантируется что элемент с ключом (x0, y0, z0) есть. Можно создавать любые доп контейнеры и структуры (1 или более). Конечно можно использовать напр std::set и выполнить 27 поисков, но это как-то "недостойно программиста" :) А как по-умному? Спасибо Название: Re: Поиск группы Отправлено: Bepec от Февраль 18, 2013, 10:30 Присоединяюсь к вопросу. Проблема чуть проще, но такого же типа.
Название: Re: Поиск группы Отправлено: Igors от Февраль 19, 2013, 17:35 Получилось, но "в общем виде" не дотянулся. Псевдокод
Код Смысл в том что искомый диапазон лежит внутри индексов поиска, схема Key[beg]------------- loKey --------- hiKey ----------Key[end] Когда поиск попадает между 2 искомыми ключами, выбираются 2 новых ключа из искомого диапазона и крутим рекурс Название: Re: Поиск группы Отправлено: Old от Февраль 19, 2013, 18:02 А результат работы этой функции где смотреть?
Я так понял, что ключи в контейнере отсортированы? Название: Re: Поиск группы Отправлено: Igors от Февраль 19, 2013, 18:11 А результат работы этой функции где смотреть? Результат (найденные элементы) записывается там где "..." :) Я так понял, что ключи в контейнере отсортированы? ДаНазвание: Re: Поиск группы Отправлено: Old от Февраль 19, 2013, 18:53 Да Я беру коллекцию из элементов Cube и куда ее тут? Как ее сортируем?Название: Re: Поиск группы Отправлено: Igors от Февраль 20, 2013, 10:25 Я беру коллекцию из элементов Cube и куда ее тут? Как ее сортируем? Наверное Вы говорите о наборе ключей для которых надо найти элементы в (большом) контейнере data. У меня такого нет - просто 1 ключ и разница +/- 1. Ну как бы набор искомых задан аналитически. Поэтому "куда" решается по задаче. В любом случае по искомому ключу необходимо находить следующий и предыдущий искомый - в том же порядке сортировки что и для data. |