Вопрос № 64420: Вводиться рядок з n символів, 2<n<8. Потрібно знайти скільки можна зробити перестановок
з цього рядка і вивести ці перестановки, їх потрібно виводити по черзі.
Приклад:
Вхідні дані:
IOX
Вихідні дані:
6
XOI
OIX<...
Вопрос № 64.420
Вводиться рядок з n символів, 2<n<8. Потрібно знайти скільки можна зробити перестановок
з цього рядка і вивести ці перестановки, їх потрібно виводити по черзі.
Приклад:
Вхідні дані:
IOX
Вихідні дані:
6
XOI
OIX
IXO
XIO
OXI
IOX
Отправлен: 27.11.2006, 13:52
Вопрос задал: Shef (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Shef!
Взять код для решения следующей задачи и с помощью него итеративно перебрать все варианты.
Идея решения вышеуказанной задачи тоже проста:
перебираем все символы, начиная с конца слова, пока не найдем встретившиеся 2 рядом, но в обратным алфавитном порядке. Типа: zzzyyxxxccddddbbaa
Надо учесть, что таких символов может быть несколько подряд:
zzzyyxxxccddddbbaa, но взять нам надо будет более близкий к концу.
Остается поменять местами найденные два символа:
zzzyyxxxcddddcbbaa
И вывести первую часть строки в прямом, порядке, а вторую - в обратном:
zzzyyxxxcdaabbcddd
В приложении мое решение подзадачи по взятию следующего по алфавиту числа из того же набора букв. На Си, точно верное и работающее. Если не сможете "перевести" на Паскаль, напишите на форум — я переведу.