using System.Collections.Generic;
public static void Premutations(int[] array)
private static void premutations(int[] array, int start)
if (start >= array.Length)
Console.WriteLine(string.Join(",", array));
for (int i = start; i < array.Length; i++)
premutations(array, start + 1);
private static void swap(int idx1, int idx2, int[] array)
array[idx1] = array[idx2];
private static void premutations(List<int> array, List<int> slate)
Console.WriteLine(string.Join(",", slate));
for (int i = 0; i < array.Count; i++)
List<int> copy = new List<int>(array);
premutations(copy, slate);
slate.RemoveAt(slate.Count - 1);
public static void Main()
Premutations(new int[]{1, 2, 3});