Forum » Programiranje » Permutacija (java)
Permutacija (java)
Spunky1001 ::
Prosil bi nekoga, da mi razloži naslednjo permutacijo z rekurzijo:
public static void main(String args[]) { permutacija("", "abc"); } public static void permutacija(String zacetek, String konec) { if (konec.length() == 1) { System.out.println(zacetek + konec); } else { for (int i = 0; i < konec.length(); i++) {//zakaj tukaj konec.length() ne sme biti konstanta? String novo = konec.substring(0, i) + konec.substring(i + 1);//tega dela ne razumem najbolje permutacija(zacetek + konec.charAt(i), novo); } } }
- spremenil: Mavrik ()
SelaC ::
Predlagal bi ti, da si izpišeš zacetek in konec v funkciji permuatacija, pa boš vido kako se spreminjata
for (int i = 0; i < konec.length(); i++) // zato, ker se dolžina stringa konec spreminja. Na začetku je 3, potem je vmes 2 pa tak naprej.
String novo = konec.substring(0, i) + konec.substring(i + 1); //to je očitno v primeru, ko je na primer i = 1. Potem je zacetek: "b", konec pa zaradi tega ukaza "ac". Torej tukaj združi vse znake pred znakom na mestu i s tistimi, ki so za znakom na mestu i.
for (int i = 0; i < konec.length(); i++) // zato, ker se dolžina stringa konec spreminja. Na začetku je 3, potem je vmes 2 pa tak naprej.
String novo = konec.substring(0, i) + konec.substring(i + 1); //to je očitno v primeru, ko je na primer i = 1. Potem je zacetek: "b", konec pa zaradi tega ukaza "ac". Torej tukaj združi vse znake pred znakom na mestu i s tistimi, ki so za znakom na mestu i.
Spunky1001 ::
Hvala za razlago, SelaC:
Vidim, da se nekako z vsako novo začetno črko začne "nova" rekurzija in je (prefix = "", str = abc //primer z abc) in tudi i se takrat poveča za 1, da gre npr. iz "acb" v "bac" in naprej.
Zanimivo je tudi, da je str na ZAČETKU nove notranje kombinacije zmeraj samo do tam, kjer se črke premešajon, nič več, npr.(levo prefix || desno str)
afdc || be // i=1
afdce || b // i=0
afdceb //zadnja kombinacija od c naprej..
afd || bce // i=2 // za zgornjim c-jem je le še e, nato bo vhodni str 4 mestni-(afebcd)
afde || bc
Vidim, da se nekako z vsako novo začetno črko začne "nova" rekurzija in je (prefix = "", str = abc //primer z abc) in tudi i se takrat poveča za 1, da gre npr. iz "acb" v "bac" in naprej.
Zanimivo je tudi, da je str na ZAČETKU nove notranje kombinacije zmeraj samo do tam, kjer se črke premešajon, nič več, npr.(levo prefix || desno str)
afdc || be // i=1
afdce || b // i=0
afdceb //zadnja kombinacija od c naprej..
afd || bce // i=2 // za zgornjim c-jem je le še e, nato bo vhodni str 4 mestni-(afebcd)
afde || bc
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java - DN] Naključna številaOddelek: Šola | 1368 (897) | nyler |
» | Pomoč pri programiranju z javoOddelek: Programiranje | 3580 (2507) | milc |
» | [JAVA] String problem!Oddelek: Programiranje | 1683 (1380) | Sergio |
» | java mali problem (začetnik)Oddelek: Programiranje | 2439 (2182) | ozbolt |
» | [Java] Zamenjat char v stringu na dolocenmu indeksu?Oddelek: Programiranje | 916 (878) | TipyTop |