|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.03.2009, 16:08 | #1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 27.04.2008
Сообщений: 179
|
Задача (динамика)
Здравствуйте.
У меня такая задача: нужно найти среди N слов количество разных(одинаковые они тогда, когда перестановкой литер одного слова можна получить другое и их длинны одинаковы) n<=20000 Нпрример N=5; список слов: slovo hello olovo ehlol yes Вот мой код: Код:
Спасибо.
www.programmer.uaforums.net - Український форум програмістів.
www.satellite.ipsys.net - Український форум супутникового телебачення. |
06.03.2009, 16:32 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Делал подобное в колледже, там слова превращал в хеши, тогда получалась строка которая независимот от пререстановки букв не менялась, потом тупо сравнивал хеши, вот только формулу уже не помню...
I'm learning to live...
|
06.03.2009, 17:47 | #3 |
Пользователь
Регистрация: 22.03.2007
Сообщений: 24
|
Есть дава предложения:
1. Упорядочить во всех словах буквы, а потом сравнить. 2. Сложить все буквы в слове и сравнивать числа. В общем случае однозначного соответствия между исходными данными и хеш-кодом нет. Поэтому существует множество массивов данных, дающих одинаковые хеш-коды. wikipeda.org
Не всё получается так, как придумал,
Но разве за это должно быть стыдно!?! Последний раз редактировалось Minotavr_x86; 06.03.2009 в 18:00. |
06.03.2009, 19:03 | #4 |
Пользователь
Регистрация: 15.01.2009
Сообщений: 69
|
Если дать ограничение на понятие «слова», как последовательность 'a'..'z', то любое слово однозначно задает 26-элементную последовательность целых чисел, при этом "равные" слова дают одинаковую последовательность, а "разные" — разную (например, если в первое число дает количество букв "А", второе — "В" и т.д.)
Тогда еще при чтение можно сформировать (преобразовать) такие последовательности (по сути, массивы) для каждого слова и под конец устроить сравнения полученых последовательностей, которое будет в любом случая намного быстрее, чем попарный запуск function can_word(s1,s2 : string) : boolean;
Silence is of great value...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ВКЛЮЧАЯ НАУШНИКИ, ЗВУК ИСХОДИТ И ИЗ ДИНАМИКА ТОЖЕ.ХОТЯ ДОЛЖЕН ОТКЛЮЧАТЬСЯ | S82 | Помощь студентам | 7 | 06.02.2009 21:35 |