Avatar billede brian0905 Nybegynder
09. november 2004 - 20:42 Der er 6 kommentarer og
1 løsning

Hvordan laver jeg permutation?

Jeg har en listbokx med en række strenge:

streng1
streng2
streng3
streng4

Nu vil jeg så gerne lave alle unikke kombinationer (permutationer da det er vigtigt hvor strengen står i listen) Det vil således sige at jeg ud fra ovenstående vil få 4! (24) kombinationer. Hvordan koder jeg mig ud af det? Jeg kan bare ikke gennemskue det
Avatar billede arne_v Ekspert
09. november 2004 - 20:47 #1
Hvad med 4 for løkker og 0 1 2 3 if sætninger ?

Hvis den skal laves generelt så skal du nok over i en rekursiv løsning,
men hvis de 4 er konstante så burde ovenstående være nok.
Avatar billede brian0905 Nybegynder
09. november 2004 - 20:48 #2
Det vil sige at dette eksempel IKKE er samme kombination

streng1
streng2
streng3
streng4

streng4
streng3
streng2
streng1
Avatar billede brian0905 Nybegynder
09. november 2004 - 20:49 #3
Takker ARne, men de er desværre generelle, så det skal virke for et vilkårligt antal strenge.... Rekursivt??? hvordan skulle jeg implementere den?
Avatar billede arne_v Ekspert
09. november 2004 - 20:50 #4
Jeg prøver lige at bixe et eksempel.
Avatar billede arne_v Ekspert
09. november 2004 - 20:57 #5
Det her er den bedste version jeg kan komme op med på 10 minutter:

using System;

class Perm
{
    public static void WriteRecursive(string[] s, string prefix, int ix, bool[] used)
    {
        if(ix < s.Length)
        {
            for(int i = 0; i < s.Length; i++)
            {
                if(!used[i]) {
                    used[i] = true;
                    WriteRecursive(s, prefix + s[i], ix + 1, used);
                    used[i] = false;
                }
            }
        }
        else
        {
            Console.WriteLine(prefix);
        }
    }
    public static void WritePerm(string[] s)
    {
        bool[] used = new bool[s.Length];
        WriteRecursive(s, "", 0, used);
    }
    public static void Main(string[] args)
    {
        string[] s = { "aa", "bb", "cc", "dd" };
        WritePerm(s);
    }
}
Avatar billede arne_v Ekspert
09. november 2004 - 20:57 #6
Hvis den skal justeres lidt så kan jeg godt det.

Senere.
Avatar billede brian0905 Nybegynder
09. november 2004 - 21:11 #7
Tusind tak.....
You are a lifesaver :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester