Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyznaczanie k-tej permutacji zbioru n-elementowego.

Ostatnio zmodyfikowano 2015-03-13 21:44
Autor Wiadomość
pekfos
» 2015-03-08 18:46:25
byle nie dłuższy niż 20 elemntów
Chyba można by niewielkim kosztem wycisnąć 21, bo pierwsze co robisz z n silnią, to dzielisz przez n ;)
P-127970
Monika90
» 2015-03-08 19:13:01
Można by, ale dla 21 elementów i tak większość permutacji będzie miało numery poza zakresem unsigned long long, więc chyba nie warto. Zwłaszcza że dodałam asercję
assert( n < f );
, więc początkowa wartość f jest przydatna.
P-127972
michal11
Temat założony przez niniejszego użytkownika
» 2015-03-08 19:21:46
No to może napisze wprost do czego mi to potrzebne. Robię zadanie ze spoja http://pl.spoj.com/problems​/TPERML/, napisałem już sobie funkcję na następną permutacje ale okazało się, ze przekraczam limit czasu, więc chcę teraz wyliczyć k-tą permutacje od razu i wypisywać tylko kolejne. Obawiam się, że rozwiązanie Moniki może nie przejść ponieważ liczba ma mieć do 100 cyfr. Może ktoś ma pomysł jak to rozwiązać ?
P-127975
Monika90
» 2015-03-08 19:48:56
Spróbuj to napisać moim sposobem, ale w języku, który ma liczby całkowite o nieograniczonej precyzji. Jeżeli to przejdzie, to będziemy wiedzili, że jesteśmy na właściwej drodze.
P-127980
michal11
Temat założony przez niniejszego użytkownika
» 2015-03-08 19:54:44
Raczej wątpię aby język miał znaczenie, szczególnie, ze większość najlepszych odpowiedzi jest w C/C++ http://pl.spoj.com/ranks​/TPERML/.
P-127981
Piastlis
» 2015-03-13 13:47:13
Szybki algorytm na k- tą permutaję z n...
Wystarczy zauważyć ze przestawienie z n na n-1 następuje po (n-1)!+1 permutacjach, czyli :
1. Jeżeli k>(n-1)! zamieniasz n z n-1 ,k=k-(n-1)!-1
2. n=n-1,punkt 1.
Problem z długością czyfry można obejść korzystając z tablicy znaków.
Wystarczy tylko mnożenie liczb na znakach i odejmowanie 1.
Algorytm sam się prosi o rekurencję.
P-128245
Piastlis
» 2015-03-13 21:44:29
Oczywiście to nie jest pełen algorytm... Kilka punktów ominołem...Sam na nie powinieneś wpaść. Jak nie dasz rady to trudno.
P-128289
1 « 2 »
Poprzednia strona Strona 2 z 2