• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Algorytm na permutacje bez rekurencji

Hosting forpsi easy 1 pln
+1 głos
2,979 wizyt
pytanie zadane 13 sierpnia 2016 w C i C++ przez jankustosz1 Nałogowiec (35,440 p.)
Witam.

Od pewnego czasu próbuję napisać algorytm to wypisywania permutacji w porządku leksykograficznym bez rekurencji. Nie mam pojęcia jak to zrobić, a w sieci same rekurencje. Może znacie taki algorytm.
komentarz 13 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,910 p.)
Się tak spytam, a czemu nie chcesz rekurencji ?
komentarz 13 sierpnia 2016 przez jankustosz1 Nałogowiec (35,440 p.)
Bo ma ograniczony stos i jeszcze nie widziałem nierekurencyjnego rozwiązania.

1 odpowiedź

0 głosów
odpowiedź 13 sierpnia 2016 przez Surykat Stary wyjadacz (14,760 p.)
1. Robisz sortowanie po pierwszym indeksie tablic permutacji

2. Grupujesz te tablice, których wartość pierwszego indeksu była taka sama.

3. Sortujesz po drugim indeksie utworzone grupy (pozostałe tablice są na swoich miejscach już)

4. Znowu tworzysz ewentualne grupy i sortujesz po kolejnym indeksie.

Przestajesz, kiedy nie utworzysz już żadnej grupy.

Nie wiem, czy to dobry pomysł, wydaje mi się w porządku. :) Nie wiem też, czy jasno się wyraziłem, więc pytaj. Czekam też na ewentualne uwagi do tego pomysłu.
komentarz 13 sierpnia 2016 przez manjaro Nałogowiec (37,390 p.)

Jeżeli robisz zadanie na SPOJu z permutacji http://pl.spoj.com/problems/TPERM2/  to uważaj i nie wtop  tak jak ja. Męczyłem się też z tym algorytmem dość długo a jak już zrobiłem to się okazało że jedynym dostępnym językiem dla tego zadania jest C.

komentarz 13 sierpnia 2016 przez jankustosz1 Nałogowiec (35,440 p.)
Rozumiem że twój sposób jest na posortowanie wygenerowanych permutacji na kolejność leksykograficzną a pytanie brzmi jak te permutacje wygenerować.
komentarz 13 sierpnia 2016 przez Surykat Stary wyjadacz (14,760 p.)
Aaa, no to nie sprecyzowałeś, bo w pytaniu jest mowa o wypisywaniu permutacji, nie o ich generowaniu. :) Jak coś wymyślę, to tutaj zamieszczę.
komentarz 13 sierpnia 2016 przez Surykat Stary wyjadacz (14,760 p.)
https://en.wikipedia.org/wiki/Heap%27s_algorithm

Tutaj masz wersję iteracyjną- tylko będziesz musiał sobie to przepisać do C/C++
komentarz 13 sierpnia 2016 przez jankustosz1 Nałogowiec (35,440 p.)
Dzięki.

Podobne pytania

+1 głos
2 odpowiedzi 542 wizyt
pytanie zadane 20 lipca 2019 w C i C++ przez Semcio Początkujący (340 p.)
–1 głos
1 odpowiedź 229 wizyt
pytanie zadane 10 listopada 2015 w JavaScript przez Michał628496 Pasjonat (17,340 p.)
0 głosów
1 odpowiedź 360 wizyt

92,081 zapytań

140,736 odpowiedzi

317,696 komentarzy

61,401 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -50% (w dniach 24.11 - 29.11 z okazji Black Friday, a potem będzie to -30%) na bilety w wersji "Standard"! Więcej informacji na temat akademii znajdziecie tutaj. Dziękujemy Sekurakowi za tak fajną zniżkę dla Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 15% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...