![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kleks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Имеется дин. список элементами которого являются произвольные слова.
Надо: вывести на экран все слова, имеющие анаграммы. Слово группируется вместе со своими анаграммами в одну строку. Слова отделяются запятыми. Повторные анаграммы игнорируются. Пример: Список: aбв бббаб аба баа авбг ваа баа авб Вывод: абв,авб аба,баа Подскажите пожалуйста, как это можно организовать?! |
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
а что именно не получается? Берешь одно слово из списка, делаешь его проверку если подходит то запоминаешь его адрес. Берешь другое слово проверяешь его, проверяешь на совподение со словами с уже выбранными адресами и т.д.
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Думаю имеется в виду оптимизация решения.
Можно так - из оставшихся слов сделать пары слов, где один элемент пары first - исходное слово, второй second - отстортированное по алфавиту: (aбв, абв) (бббаб, абббб) (аба, ааб) (баа, ааб) (авбг, абвг) (ваа, аав) (баа, ааб) (авб, абв) Потом сортируешь список по алфавиту по отсотрированным словам: (аба, ааб) (баа, ааб) (баа, ааб) (ваа, аав) (бббаб, абббб) (aбв, абв) (авб, абв) (авбг, абвг) Потом пробегаешь по списку. И если node->second == node->next->second, то у нас анаграмма Не думаю что это самое быстрое решение, но оно ОЧЕНЬ простое. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| kleks |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Спасибо ОГРОМНОЕ!!! Действительно это самое простое, что можно было придумать!!!! Но тут у меня возникла новая проблемка(относящаяся к данной задачке): у меня имеется список, элементом которого является first - исходное слово, а second - его анаграмма, так вот, я в этом списке хочу удалить повторы...я написал функцию удаления (всё проверил вроде без ошибок), но почему-то вместо того что бы удалять заданный элемент списка (вместе с освобождением памяти) он на его месте пишет такие вот чёрточки: |||||||||
Вот данные функци (поиск эл-та в списке, предыдущий эл-т в списке, удаление эл-та):
В основной программе я например исп. эту функцию так:
В чём проблема объясните пожалуйста?!! Я никак не могу понять... |
||||
|
|||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Прошу прощения, а зачем все эти телодвижения, next, prev'ы?
Ведь есть std::list и std::sort и прочие радости(например std::list::unique С первого взгляда вроде удаление корректно. Хотя хз, я только с универа - плохо соображаю. Мож ты в деструкторе что страшное творишь?
эээ. А это что такое? strcmp не пойдет? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| kleks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Вот ведь блин, действительно, в деструкторе напутал!!!! Спасибо!!!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |