Unikatowe permutacje

0

Witam!
Załóżmy, że istnieje zbiór niepowtarzających się elementów o rozmiarze n.
Z tego zbioru chcę wygenerować takie permutacje, żeby dany element na danej pozycji nie powtórzył się ani razu. Przykład:

zbiór: {1, 2, 3, 4}
unikatowe permutacje:
{1, 2, 3, 4}
{2, 1, 4, 3}
{3, 4, 1, 2}
{4, 3, 2, 1}

Takich permutacji jest dokładnie n. Generowanie wszystkich n! i wybieranie spośród nich unikatowych nie sprawdzi się w moim przypadku, ponieważ potrzebuję wygenerować do 10 sztuk ze zbioru, który może mieć kilkadziesiąt elementów.
Pytanie kieruję pod kątem języka C#.

Za wszelkie sugestie z góry dziękuję!

0
for(int n=1;n<Tb.Length;++n)
  {
   // tu wyświetlasz
   int x=Tb[0];
   for(int i=1;i<Tb.Length;++i) Tb[i-1]=Tb[i];
   Tb[Tb.Length-1]=x;
  }
0

Wygląda na to, że działa. Zapomniałem tylko dopisać, że nie chodziło mi o proste przekręcenie tablicy, tylko o efekt losowości.
Powyższe rozwiązanie zachowuje kolejność elementów nawet do 99%.

1 użytkowników online, w tym zalogowanych: 0, gości: 1