Permutacja

ZP
  • Rejestracja:prawie 8 lat
  • Ostatnio:10 miesięcy
  • Postów:38
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.

iwannabeprogrammer
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Poznań
  • Postów:26
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;
}

MarekR22
nie dość, że nie na temat, to jeszcze błędna odpowiedź.
ZP
  • Rejestracja:prawie 8 lat
  • Ostatnio:10 miesięcy
  • Postów:38
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)]; "'

MarekR22
ten fragment odpowiada, za mącenie ci w głowie. Naprawdę zaakceptowałeś własny post cytujący bledną odpowiedź?
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.