"Проблемы программирования (Учебное пособие по программированию)", вероятно, является одной из лучших книг по алгоритмам. Я разрешил первые 11 упражнений, но теперь я застреваю с проблемой "Crypt Kicker":
Crypt Kicker
Общим, но небезопасным методом шифрования текста является перестановка букв алфавита. Другими словами, каждая буква алфавита последовательно заменяется текстом другой буквой. Чтобы гарантировать, что шифрование обратимо, никакие две буквы не заменяются одной буквой.Ваша задача - расшифровать несколько закодированных строк текста, предполагая, что каждая строка использует другой набор замещений и что все слова в расшифрованном тексте являются словарями известных слов.
Input
Вход состоит из строки, содержащей целое число n, за которым следуют n строчных слов, по одному в строке, в алфавитном порядке. Эти n слов составляют словарь слов, который может отображаться в расшифрованном тексте.
После словаря есть несколько строк ввода. Каждая строка зашифровывается, как описано выше.Словарь содержит не более 1000 слов. Количество слов не превышает 16 буквы. Зашифрованные строки содержат только строчные буквы и пробелы и не превышают 80 символов.
Вывод
Расшифруйте каждую строку и распечатайте ее до стандартного вывода. Если есть несколько решений, любой будет делать.
Если нет решения, замените каждую букву алфавита на звездочку.Пример ввода 6
и
член
джейн
слоеное
пятно
Yertlebjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn
xxxx yyy zzzz www yyyy aaa bbbb ccc ddddddРезультат выборки
dick и jane, слоеный и пятнистый и yertle...
Какую стратегию я должен принять, чтобы разрешить это упражнение? Я думал о классическом и жестоком обратном пути, но я стараюсь избегать этого, пока не найду что-то более умное.
PS: Это не домашнее задание, я просто пытаюсь улучшить свои общие навыки.