Forum » Programiranje » [Java] Permutacije
[Java] Permutacije
<b>klima</b> ::
Pozdravljeni!
Imam problem z realizacijo permutacij s ponavljanjem v Javi, zato se obračam na vas, mojstre kode…
Torej problem je sledeč: Denimo da imam tabelo znakov (char[]), v kateri je na vsakem drugem mestu zapisan en znak (začenši z indeksom 0), primer: a_b_c_d_e, itd… Podčrtaj označuje prazno mesto v tabeli. Sedaj bi rad med te nize znakov postavil 4 stevilke 0,1,2 ali 3, tako da bi dobil vse možne permutacije. Recimo a0b0c0d0e , potem a0b0c0d1e, itd, do vseh možnih… Problem je v tem, ker se s številom praznih mest povečuje tudi kompleksnost, saj bi že za zgornji primer dobili 4*4*4*4 = 256 rešitev. Za 6 mest že 4096.
Problem: kako realizirati ta problem? Koliko zank sploh potrebujem? Mogoče kakšen drug predlog, namesto uporabe tabele? Hvala že v naprej za vsak namig oz. predlog rešitve.
LP
Imam problem z realizacijo permutacij s ponavljanjem v Javi, zato se obračam na vas, mojstre kode…
Torej problem je sledeč: Denimo da imam tabelo znakov (char[]), v kateri je na vsakem drugem mestu zapisan en znak (začenši z indeksom 0), primer: a_b_c_d_e, itd… Podčrtaj označuje prazno mesto v tabeli. Sedaj bi rad med te nize znakov postavil 4 stevilke 0,1,2 ali 3, tako da bi dobil vse možne permutacije. Recimo a0b0c0d0e , potem a0b0c0d1e, itd, do vseh možnih… Problem je v tem, ker se s številom praznih mest povečuje tudi kompleksnost, saj bi že za zgornji primer dobili 4*4*4*4 = 256 rešitev. Za 6 mest že 4096.
Problem: kako realizirati ta problem? Koliko zank sploh potrebujem? Mogoče kakšen drug predlog, namesto uporabe tabele? Hvala že v naprej za vsak namig oz. predlog rešitve.
LP
Mavrik ::
Hja, če hočeš res vse rešitve, potem boš moral pač se sprijazniti, da ti pri velikih sekvencah se jih nabere zelo veliko.
K stvari se spraviš preprosto tako: prvo vrednost povečuješ za 1 (vrednosti na črticah si lahko shraniš v tabelo če ti je lažje) dokler ne prideš do 4. Potem prvo postaviš na 0, drugi pa prišteješ 1. Ponoviš. Ko pride druga do 4, jo daš na 0 in prišteješ tretji 1. In tako dalje do vseh možnih kombinacij.
Lahko pa narediš preprosto števec, ki šteje do tolko mestnega števila, kot maš praznih mest in po vsakem povečanju za 1 daš na vsako črtico eno števko.
Vsaka dodatna praznina ti bo dodala *4 rešitve, samo okoli tega preprosto ne gre.
K stvari se spraviš preprosto tako: prvo vrednost povečuješ za 1 (vrednosti na črticah si lahko shraniš v tabelo če ti je lažje) dokler ne prideš do 4. Potem prvo postaviš na 0, drugi pa prišteješ 1. Ponoviš. Ko pride druga do 4, jo daš na 0 in prišteješ tretji 1. In tako dalje do vseh možnih kombinacij.
Lahko pa narediš preprosto števec, ki šteje do tolko mestnega števila, kot maš praznih mest in po vsakem povečanju za 1 daš na vsako črtico eno števko.
Vsaka dodatna praznina ti bo dodala *4 rešitve, samo okoli tega preprosto ne gre.
The truth is rarely pure and never simple.
<b>klima</b> ::
Mavrik, stokrat ti hvala za to idejo... Sam sem namreč preveč zakomplicirou... Hvala še enkrat!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | program, ki ti najde vse kombinacije črk oz. številk, ki mu jih podaš (strani: 1 2 )Oddelek: Programiranje | 41815 (6507) | XyNOBvxWVJ |
» | (Java) Iskanje manjkajoči podatkov v tabeliOddelek: Programiranje | 1050 (815) | noraguta |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 18009 (8757) | black ice |
» | Matlab problemOddelek: Pomoč in nasveti | 1434 (858) | bluefish |
» | Loopy problemOddelek: Programiranje | 1467 (976) | snow |