Mitenkä annetun merkkijono kaikki permutaatiot generoidaan? Haluaisin tallettaa muuttujiin kaikki kymmennumeroiset luvut, joissa eka numero ei ole nolla. Ilmeisesti merkkijonotaulukkoja käytetään, mutta miten kyseisen merkkijonon voi siten muuttaa 10-numeroiseksi intiksi tai longiksi?
Tai siis oikeastaa tarvitsen luupin, jossa muuttujaan tallennetaan kerralla yksi luku, mutta luuppi käy läpi kaikki permutaatiot. Näin muistia ei kulu tarpeettomasti.
Pikkuapua
2
335
Vastaukset
- Yksinkertaista
Yksinkertaista ja tee homma ensin 2-numeroisena (ja ehkä myös 3-numeroisena), niin sen jälkeen 10-juttu pitäisi onnistua helposti.
- Delete program ? (Y)
Permutaatiossa halutaan järjestää kaikki joukon alkiot.
Jos sinulla on merkkijonossa esim "abc", siitä on mahdollista muodostaa seuraavat permutaatiot :
abc, acb, bac, bca, cab, cba
Jos tosiaan haluat tehdä funktion, joka palauttaisi kaikki permutaatiot vaikka esim. luvusta "1234567890", niin sinulla edessä pienoinen ongelma muistin suhteen. Jos kyse on tosiaan pelkistä luvuista voit vähentää muistin kulutusta tallentamalla kunkin permutaation tulokset suoraan long muuttujiin. Silti noita muuttujia tulee aika paljon .
Helpointa kai laskea ensin kokonaisalkiomäärä eli k! (10! = 3628800) ja sitten varata ensin niille kaikille riittävän suuri taulukko (3628800 x 4tavua = 14515200 = 14,5Mt). Riippuen missä koneessa työskentelet, saatat joutua paloittelemaan taulukon pienempiin osiin. Yleisesti ottaen kaikilla uudemmilla 32-bittisillä koneilla tuo pitäisi olla vielä suhteellisen helppoa. Jos haluat haastetta, tee sama 8-bittisellä koneella. ;)
Vaihtoehtoisesti voit tallentaa permutaatiot linkitettyyn listaan tai sitten molempien (taulukko/lista) tapojen yhdistelmään. Miten vaan tiedot tuntuisivat paremmin saatavilla niiden jatkokäsittelyä silmällä pitäen.
Luodessasi eri permutaatiota suosittelen karsimaan 0-alkuiset pois jo luontivaiheessa, koska siten säästyy muistia. Tällöin tarvittavan muistin määrä on vain k!-(k-1)!.
Ei se tuon kummempi pitäisi olla, jos ymmärsin kysymyksen oikein.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Mitä yhteistä on sulla ja kaivatulla?
Onko teillä samantyyppinen olemus tai luonne? Vai muistuttaako vartalonne toisiaan? Tai kasvot? Entä pukeutuminen? Onko991516- 2231146
Kerran oltiin mekin kahdestaan
Saanko sanoa, että minua kyllä vähän huvitti jälkeenpäin? Olit kuin vapiseva jänis ketun vieressä valmis loikkimaan paik131146Persut yritti estää somalinaista väittelemästä lääketieteen tohtoriksi
Yrittivät saada hänet lähihoitajakouluun, vaikka pärjäsi hyvin koulussa. Nyt hän on yliopistossa väitellyt lääketieteen247958Oikeasti, voitais mennä kahville
ja jutella niin kuin normi-ihmiset. Kyllä toivon sitä. En pelkää kohdata enkä istua sun kanssa samassa pöydässä. Miten o81949- 141930
Jos nainen harrastaa seksiä
Useiden kanssa, miten se eroaa miesten mielestä siitä, jos miehellä on ollut useita s kumppaneita? Oletan että kaikki mi179913Pihlaja-puulle
Illat on mulle pahimpia. En tiiä miks se olis vaan parasta yöstä toiseen nukkua sun kanssa ja herätä sun kasvoihin. Jos15839- 71757
Yritin keväällä unohtaa sinut nainen
mutta siinä kävi niin, että ikävä tuli korkoineen takaisin. Niin että mikä taikavoima sinulla on minuun, sitä joutuu mie31723