Seuraa 
Viestejä45973

apua apua

Haluaisin tehdä algoritmin, joka ulostaa kaikki mahdolliset permutaatiot jostain kokonaislukujen joukosta?

Katsoin wikipediasta apua mutta en oikein ymmärtänyt!? voisiko joku auttaa

Kommentit (1)

pöhl
Seuraa 
Viestejä964

Eräs vaihtoehto on rekursio.
pseudokoodina
Perm ({a_1,...,a_n})
Jos n<0 tulosta virhe.
Jos n=0 tulosta tyhjä joukko
Jos n=1, tulosta a_1.
Jos n>1,
tulosta a_1 + tulosta Perm({a_2,...,a_n})
tulosta a_2 + tulosta Perm({a_1,a_3,...,a_n})
...
tulosta a_n + tulosta Perm({a_1,...,a_{n-1}})

Permutaatioiden lukumäärä on nopeasti kasvava funktio, joten toteutit algoritmin miten tahansa, sen suoritus kestää varsin pienilläkin joukoilla kauan.

Jos käytät C++:aa, voit ottaa käyttöön funktion next_perm (tjsp). Tällä voit kätevästi tulostaa kaikki permutaatiot muutaman rivin koodilla.

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla

Suosituimmat

Uusimmat

Sisältö jatkuu mainoksen alla

Suosituimmat