![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 19.09.2011
Сообщений: 23
|
![]()
Слово называется анаграммой другого слова, если оно может быть получено перестановкой его букв.
Во входном файле два слова в отдельных строках. Длина каждого слова не превышает 255 символов. В выходной файл выведите "YES" - если введенные слова являются анаграммами друг друга, и "NO" - в противном случае. Пример: SHARM YES MARSH ANANAS NO NASA |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
на форуме уже решалась такая задачка.
а алгоритм решения, как ни странно, прост, как топор: проходим по всем буквам первого слова, находя для них точно такие же во втором слове. Если для какой-то буквы первого слова аналогичной не найдено - прерывание цикла, выход с "NO", если нашлась буква - то из второго слова её нужно удалить. если дошли до конца 1-го слова без сбоев, тогда проверяем остаток во 2-м слове - если он пуст - ответ "YES", если во втором слове остались буквы - ответ "NO" p.s. я тут алгоритм расписывал больше, чем писать полностью исходный код решения! Последний раз редактировалось Serge_Bliznykov; 15.11.2011 в 08:40. Причина: подправил алгоритм, забыл указать про удаление буквы из второго слова. Спасибо за замечание TinMan. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]() Цитата:
Но я бы поступил проще: отсортировал бы оба слова и сравнил. Если равны - значит, анаграмма..
Предпочитаю на "ты".
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
При этом, кстати, сразу (перед сортировкой) можно сравнить длину слов. Если она разная, значит NO. В противном случае работаем дальше.
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Вадим Мошев, да, согласен. это несложно и сразу отсеет заведомо неверные варианты!
TinMan, ну, можно и так, просто мне показалось, что вариант без сортировки проще (ведь в Паскаль/Delphi нет встроенных методов сортировки), да и эффективнее. Чем сортировать 255 символов, программа может уже завершить работу на первых же проверках... ладно. раз пошла такая пьянка, то вот код решения: Код:
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
Я совершенно согласен со всеми доводами
![]() ![]() Интересно, что если наложить условие, что слова непусты (или считать, что пустота пустоте не анаграмма, что не лишено сермяжного смысла)), то можно избавиться от двойного вывода 'NO' в приведенном коде.
Предпочитаю на "ты".
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
анаграмма | Витас | Помощь студентам | 1 | 02.11.2010 18:50 |
[С++] Анаграмма | Nikita_M | Помощь студентам | 1 | 25.10.2010 21:46 |
Анаграмма | Djeka(c) | Помощь студентам | 1 | 16.09.2010 22:15 |