Tjena, blir första inlägget här då. :) Det du är ute efter är alla permutationer av en vektor (med möjlighet till identiska element). Där har du något att söka på på nätet. Ah just ja, så hette det. :) Attans när man har glömt orden. Tror att din pseudo hjälper en del. Ska prova att utveckla den. Tackar. Jag kan rekommendera den här artikeln i ämnet:Skapa ord av rappakalja
Skulle vilja mata en in ett antal slumpmässiga bokstäver och se vilka ord som kan bildas av det som finns i vectorn.
Säg att jag har en vektor som innehåller ['a', 'b', 'a', 'n', 'n']
Skulle då vilja få:
abann
abnan
abnna
abana (bana)
banna
... etc
Min tanke är att man igenom två loopar går igenom vectorn på något sätt. Första loopen håller reda på begynnelsebokstaven, för att sedan efter att ha tagit alla efterföljande bokstäver hoppar till nästa. Men då ska ju den bokstaven inte med i den efterföljande loopen.
Några bra idéer? Gärna pseudokod eller något, har det på tungan men behöver lite guidning. :)
Tack på förhand.Sv: Skapa ord av rappakalja
Det finns något inbyggt i algorithm, om jag inte minns fel.
Lösningen drabbas av s.k. kombinatorisk explosion; dvs. jävligt många möjligheter ganska snabbt.
En möjlig pseudokod utan hänsyn till upprepningar skulle kunna vara:
vector all_permutations(vector elements)
{
if(elements.count() = 0)
return;
vector permutations;
for_each(element in elements){
newperms = all_permutations(elements.remove(element));
permutations.add(element & newperms)
}
}
Detta tenderar dock att bli långsamt eftersom man måste skicka vektorer hela tiden. En bättre metod är att flytta runt i en glboal array i så fall.Sv:Skapa ord av rappakalja
Sv: Skapa ord av rappakalja
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/permutations.asp
Där finns en hel del kod och förklaringar...