Permutacja

0

Mam o to takie zadanie z platformy LNU (Liga Niezwykłych Umysłów):
"Hasło do systemu operacyjnego składa się z n znaków, układanych z n elementowego zbioru niepowtarzalnych znaków.
Uzupełnij funkcję int permutation ( int n ) tak, aby zwracała liczbę wszystkich permutacji tego hasła.

Założenia: 0 < n ≤ 12"
Nie wiem jak mam to zrobić, pomoże ktoś? Nie chodzi mi o gotowy kod.

3

Liczba permutacji n-elementowego zbioru to n!. Wystarczy więc, że napiszesz funkcję liczącą silnię z n.

0
ZiomaleQ PL napisał(a):

Mam o to takie zadanie z platformy LNU (Liga Niezwykłych Umysłów):
"Hasło do systemu operacyjnego składa się z n znaków, układanych z n elementowego zbioru niepowtarzalnych znaków.
Uzupełnij funkcję int permutation ( int n ) tak, aby zwracała liczbę wszystkich permutacji tego hasła.

Założenia: 0 < n ≤ 12"
Nie wiem jak mam to zrobić, pomoże ktoś? Nie chodzi mi o gotowy kod.

losowe permutacje ?

TElem* permutacja(TElem *p, int n)
{
for( int i = n-1; i > 0; i++)
p[i] :=: p[rand(i)];
return p;
}

0
flaming napisał(a):
ZiomaleQ PL napisał(a):

Mam o to takie zadanie z platformy LNU (Liga Niezwykłych Umysłów):
"Hasło do systemu operacyjnego składa się z n znaków, układanych z n elementowego zbioru niepowtarzalnych znaków.
Uzupełnij funkcję int permutation ( int n ) tak, aby zwracała liczbę wszystkich permutacji tego hasła.

Założenia: 0 < n ≤ 12"
Nie wiem jak mam to zrobić, pomoże ktoś? Nie chodzi mi o gotowy kod.

losowe permutacje ?

TElem* permutacja(TElem *p, int n)
{
for( int i = n-1; i > 0; i++)
p[i] :=: p[rand(i)];
return p;
}

za co odpowiada ten fragment
"' p[i] :=: p[rand(i)]; "'

0

za co odpowiada ten fragment
"' p[i] :=: p[rand(i)]; "'

operaor: :=:
powoduje wymianę wartości w ramach dwóch zmiennych;
np.: dla: a = 1, i b = 7;
po zamianie ma być odwrotnie: b = 7 i a = 1;
takie coś oznaczamy właśnie: a :=: b;

Zazwyczaj jest to realizowane w taki sposób:

tmp = a; a = b; b = tmp;

a w przypadku liczb całkowitych można to zrealizować bez pomocniczej zmiennej tmp:
a ^= b; b ^= a; a^=b;

0

mały błąd.
tam powinno być:
'po zamianie ma być odwrotnie: a = 7 i b = 1', oczywista

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