| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Поиск по маске |
| Автор: Fixin 15.12.2004, 19:19 |
| Наверняка вопрос уже был, но я ничего не нашел. Помогите ссылками, или расскажите чем можете помоч |
| Автор: Akina 15.12.2004, 19:36 |
| А чего надо-то? и поподробнее, да? |
| Автор: 3,14 16.12.2004, 13:13 |
| обработка регулярных выражений не подойдёт? |
| Автор: Fixin 16.12.2004, 19:34 | ||||
Дано: *ени*; "найти слово по маске в данном выражении" Ответ: выражЕНИи Мне нужно узнать толко как определить подходит ли данное слово маске.
Это как? |
| Автор: Петрович 16.12.2004, 21:28 |
| Посмотри http://regexpstudio.com/RU/. Думаю это то что тебе нужно. Даже больше. |
| Автор: Fixin 18.12.2004, 20:56 |
| Еще есть что-нибудь? |
| Автор: maxim1000 18.12.2004, 23:20 |
| ну, если интересует сам алгоритм, можно предложить некоторую вариацию на тему динамического программирования: вводим функцию f(x,y): 1 - если первые x символов тестируемого слова соответствуют y первым y символам маски 0 - иначе пусть n - длина слова, m - длина маски тогда задача сводится к определению f(n,m) а посчитать эту функцию можно рекурсивно: f(x,y)="или" следующих выражений: 1. слово[x]==маска[y] и f(x-1,y-1) 2. маска[y]=='?' и f(x-1,y-1) 3. маска[y]=='*' и ( f(x-1,y-1) или f(x-1,y) ) для такого вычисления можно сделать матрицу n*m, в ячейках которой будут значения функции если заняться оптимизацией, можно сохранять только последний столбец и тот, который вычисляется в данный момент |
| Автор: maxim1000 18.12.2004, 23:45 | ||
вот, набросал тут на C++, проверил на нескольких простых примерах, вроде работает...
|
| Автор: Fixin 19.12.2004, 16:18 |
| Сенькваю. |
| Автор: neutrino 19.12.2004, 21:30 |
| Тема обсуждалась тут: http://forum.vingrad.ru/index.php?act=ST&f=13&t=11581&st=0 |