Напечатать все перестановки чисел 1..n
Напечатать все перестановки чисел 1..n (то есть последовательности длины n, в которые каждое из чисел 1..n входит по одному разу).
Ответы (1 шт):
Автор решения: A K
→ Ссылка
Это классический алгоритм, во многих учебниках даётся описание. Поскольку вы не уточняли, что конкретно нужно — вот вам самая простая для понимания реализация:
void Main()
{
char[] a = "123".ToCharArray();
Permute(a, 0, a.Length - 1);
}
void Permute(char[] a, int i, int n)
{
int j;
if (i == n)
{
Console.WriteLine(new string(a));
}
else
{
char temp;
for (j = i; j <= n; j++)
{
// swap(a[i], a[j]);
temp = a[i];
a[i] = a[j];
a[j] = temp;
Permute(a, i + 1, n);
// swap(a[i], a[j]);
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
Вывод:
И классическая картинка-пояснение (мысленно подставьте вместо строки "123" "ABC"):

