15. april 2006 - 22:45Der er
9 kommentarer og 1 løsning
Algoritme til kombinationer af string
Hej
Jeg forsøger lidt på at lave en algoritme, der kan lave alle kombinationer af en string ud fra følgende regler: * Hvis strengen er x antal tegn lang skal kombinationerne også være x lang * Hvert tegn skal og må kun bruges en gang.
Jeg har tidligere leget med en algoritme, der skulle gøre næsten det samme. Her var det bare alle kombinationer uanset længden og tegnene måtte bruges lige så tosset de ville. Problemet er at hvis jeg genbruger denne skal jeg til at sortere alle de muligheder fra, der ikke lever op til kravene.
Selv har jeg overvejet en form for bytte algoritme. Måden den fungerer på er at den starter ved de 2 bagerste tegn, og når den ikke kan lave flere kombinationer låner den et tegn fra næste plads.
Eks
ahej ahje ajhe <- Da den ikke kan bytte tilbage tager den h't ned i stedet for j'et ajeh aejh <- Nu er det bare e't der kommer ud så jeg kan kombinere med h og j
Jeg kan regne ud hvor mange kombinationer jeg kan lave alt efter hvor mange pladser jeg tager i brug. 2 pladser = 2*1 = 2 kombinationer 3 pladser = 3*2*1 = 6 kombinationer
På denne måde ved jeg hvornår jeg skal en plads længere ud at hente et nyt tegn.
Først vil jeg lige høre om det er muligt at følge, hvad jeg mener. Fordi jeg synes det er halvsvært at forklare.
Ellers er mit spørgsmål om der findes en smartere metode. For jeg synes at den måde her virker som noget, der meget hurtigt bliver noget rod.
Hvis vi antager at programmet kaldes med strengen "hej"
Jeg kan fint følge flowet i programmet til hvor den skriver hej (det første ord), men så begynder det at blive kludret.
Den hopper vel tilbage til hvor i=2, hvilket gør at for-loopet slutter og den hopper igen tilbage til i=1. used[1] sættes til false og i øges til 2. prefix bliver så hj og da used[1] er første false tilføjes e'et og den udskriver hje
Jeg er lidt i tvivl her. Ovenstående virker meget rodet.
Jakobs er ioevrigt smartere, men jeg synes at used arrayet er nemmere at forstaa
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.