Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sigareta
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 4
#1

Поиск - C++

10.06.2009, 21:15. Просмотров 521. Ответов 7
Метки нет (Все метки)

Вечер добрый.
Подскажите максимально быстрый способ поиска, меня больше интересует не сама реализация а способ, так сказать или алгоритм..

Есть список ключ - значение. и ключ и значение строковые переменные.

например
354321-фывалорфыдва
13-флыврадфыв
8735187351-флыврдафыв
...

в подпрограмму передается строка вида "4621351" необходимо найти ключ который максимально совпадает с переданной строкой (совпадения максимального количества лидирующих цифр)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2009, 21:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск (C++):

Поиск символа не могу переделать под поиск сочетания символов - C++
Есть код программы на поиск и замену по одному символу.Не могу понять, как сделать код на поиск сочетания символов. Чтобы найдя в введённой...

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле - C++
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим папкам пройтись и из каждой папки в этом файле достать...

Поиск циклов в графе. Поиск центра взвешенного графа - C++
В интернете, к сожалению, по этим вопросам не так уж много нашел. Можете посоветовать статью/пособие, где было бы подробно об этом написано?

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

Поиск пикселя и поиск изображения на экране - C++
Переписываю код из clickermann для запуска его на C++. Мне нужны две функции которые выполняли бы сканирование экрана и поиск пикселя...

Поиск. Последовательный поиск - C++
Через 2 дня сдавать лабу =-O , а я до сих пор ни могу с ней справиться :umnik: ... Препад, чесное слово " дебил " :-| , дал задания, а...

7
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
10.06.2009, 21:24 #2
ну ты бери 2 строки и посимвольно находи разность их символов чем меньше разность по модулю будет тем ближе у тя одно число к другому если 0 то они равны.
0
Rififi
2360 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
10.06.2009, 21:29 #3
преобразовать ключ из строки в число. хранить преобразованные ключи в отсортированном порядке. далее бинарным поиском
0
Sigareta
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 4
10.06.2009, 21:33  [ТС] #4
ну это не самый шустрый способ, при этом придется пройтись по всем элементам списка... а их там сотни, а может и тысячи...

Добавлено через 1 минуту 31 секунду
Цитата Сообщение от Rififi Посмотреть сообщение
преобразовать ключ из строки в число. хранить преобразованные ключи в отсортированном порядке. далее бинарным поиском
кстати первая идея была.. а разве бинарный поиск не для точного нахождения конкретного значения??ну то есть можно передать такое число которого не найдется в ключах...
0
Gravity
564 / 558 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.06.2009, 22:11 #5
Цитата Сообщение от Sigareta Посмотреть сообщение
а разве бинарный поиск не для точного нахождения конкретного значения??ну то есть можно передать такое число которого не найдется в ключах...
Поиску на это пофиг, если не найдется, то вернет NULL.
0
Sigareta
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 4
10.06.2009, 22:20  [ТС] #6
так я ж об этом и говорю ) поиску то пофиг, он не найдет точного совпадения почти никогда (ну или в крайне редких случаях) а мне надо наиболее подходящее , хотя бы скажем первые 2 цифры или 1
0
Gravity
564 / 558 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
10.06.2009, 22:33 #7
Ты, видимо, не правильно понимаешь алгоритм бинарного поиска. binsearch использует заданную функцию для сравнения, и в качестве нее ты можешь указать то, что тебе нужно, будь то strncmp или еще что-то.
Тут одна только проблема: при нахождении первого подходящего элемента, поиск его и возвращает, поэтому для твоего случая возможно надо дополнить алгоритм, чтобы он мог продолжить искать еще более подходящие ключи.
0
Sigareta
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 4
10.06.2009, 22:35  [ТС] #8
Цитата Сообщение от Gravity Посмотреть сообщение
Ты, видимо, не правильно понимаешь алгоритм бинарного поиска. binsearch использует заданную функцию для сравнения, и в качестве нее ты можешь указать то, что тебе нужно, будь то strncmp или еще что-то.
Тут одна только проблема: при нахождении первого подходящего элемента, поиск его и возвращает, поэтому для твоего случая возможно надо дополнить алгоритм, чтобы он мог продолжить искать еще более подходящие ключи.
все понял спасибо
0
10.06.2009, 22:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2009, 22:35
Привет! Вот еще темы с ответами:

Поиск. Бинарный поиск - C++
Ребятушки, а это опять я :) Задали индивидуальное задание " Бинарный поиск " Препод сказал, сделать простейшую программку с методом...

поиск по сайту. не могу разобраться как делать поиск по нескольким полям - PHP БД
поиск по одному полу осуществляется вот так: SELECT * from tablepart WHERE `marka` LIKE '%" . $search . "%' or `model` LIKE '%" . $search...

QRegExp поиск всех строк которые соответствуют шаблону и поиск их длины - C++ Qt
//поиск строк типа ] QRegExp reg("\\\\]"); QString text = "test ] bla ]"; int pos = reg.indexIn(text); //здесь ошибка....

Поиск символа в строке. Как осуществить поиск в обратном направлении - Pascal
Всем доброго времени суток. Вопрос такой: как осуществить поиск в обратном направлении, т.е. я в строке (a(bc)) нахожу первую закрытую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.