Mulige sammensætninger af bogstaver

Tags:    c++

Hej allesammen!

Er stødt ind i et problem, jeg er ved at prøve at finde samtlige mulige sammensætninger af en bestemt bogstavs-række.

Hvis jeg fx har "ordet": xvfs
Så vil jeg gerne gøre det muligt at finde alle variationer af de bogstaver. Har simpelthen tænkt på det så længe at jeg er gået helt i baglås og overhovedet ikke kan finde på noget.
Selvfølgelig noget med nogle inner-løkker, men kan ikke finde på mere.

Ville være rigtig glad for en algoritme, pseudo-kode eller bare et C++ eksempel.



Altså - det er jo egentlig rimelig simpelt...

Nu er jeg ikke perfekt c++ gut, så du må tage til takke med et lille c# eksempel:

Fold kodeboks ind/udKode 

Bemærk at List er en generisk (template i c++) klasse, som svarer meget til std::Vector.
Desuden vil ovenstående kun give "ord" med det samme antal bogstaver - så jeg håber det var hvad du ville. Jeg har ikke testet det med flere af de samme bogstaver, men det burde egentlig i teorien virke. Håber jeg det kan bruges.



I C++ kunne det se sådan ud:

Fold kodeboks ind/udKode 




Jeg fik klaret det med følgende kode: (Det var ikke det jeg bad om, men denne algoritme var hurtigere)
Fold kodeboks ind/udKode 


Men mange tak, begge to!



Indlæg senest redigeret d. 31.12.2008 15:42 af Bruger #11328
Synes da lige jeg vil komme med mit foreslag, den nederste function er ikke nødvendig det er bare eksempel på brug, minder meget om bertels.
ved all boolean true returneres alle mulige kombinationer man kan danne hvis man ikke skal tage alle, ellers kun de mulige med alle valgte.
Fold kodeboks ind/udKode 


har lidt svært ved at se hvordan din egen løsning løser det du bad om.



Indlæg senest redigeret d. 31.12.2008 17:18 af Bruger #5620
har lidt svært ved at se hvordan din egen løsning løser det du bad om.

Jeg fik klaret det med følgende kode: (Det var ikke det jeg bad om, men denne algoritme var hurtigere)


Nej, men ville ikke have at i skulle løse opgaven for mig. Så derfor bad jeg om en mulig løsning på det svar jeg skulle bruge.
Nu fandt jeg så selv på en smartere måde til mit problem, som jeg postede så andre kunne få nytte af det.



t