Скажем, n
отдельные цифры находятся в массиве длиной n
. Тогда проблема генерации перестановок сводится к:
- Выбор одной из
n
цифр в качестве первой цифры для печати.
- Перестановка оставшихся
n-1
цифр.
рекурсия.
Псевдокод для такой рекурсивной функции permute
будет выглядеть примерно так:
List permute (Array digits)
{
List permutations = /* initialize an empty list */
for (i=0; i<n; i++)
{
firstDigit = digit[i];
Array otherDigits = /* array containing all digits except firstDigit. */
List subPermutations = permute(otherDigits);
/* prepend firstDigit into each element of 'subPermutations' */
/* add all elements of 'subPermutations' to the list 'permutations' */
}
return permutations;
}
Затем просто позвоните permute
и распечатайте список или сделайте с ним что-нибудь еще.
РЕДАКТИРОВАТЬ: вам также нужно обрабатывать край край permute
с 1 цифрой.
Я думаю, что это уже слишком много информации для "домашней работы":)