» »

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.

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


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java - DN] Naključna števila

Oddelek: Šola
121368 (897) nyler
»

Pomoč pri programiranju z javo

Oddelek: Programiranje
203580 (2507) milc
»

[JAVA] String problem!

Oddelek: Programiranje
151683 (1380) Sergio
»

java mali problem (začetnik)

Oddelek: Programiranje
192439 (2182) ozbolt
»

[Java] Zamenjat char v stringu na dolocenmu indeksu?

Oddelek: Programiranje
5916 (878) TipyTop

Več podobnih tem