Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » algorithmus

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.04.2005, 18:50 Uhr
~xy
Gast


Kann mir bitte jemand den Algorithmus zu diesem Beispiel erklären:

Schreiben Sie ein Programm, welches eine Folge p von n natürlichen Zahlen einliest und, falls es sich dabei um eine Permutation der natürlichen Zahlen 1, 2, ..., n handelt, prüft, ob die Permutation gerade oder ungerade ist.
Anmerkung: Steht in einer Permutation eine größere Zahl vor einer kleineren, so liegt eine "Inversion" dieser beiden Zahlen vor. Ist die Anzahl der Inversionen gerade, so heißt auch die Permutation gerade, entsprechend bei ungerader Anzahl von Inversionen.
Eingabe: n / p / n / p / ...

Beispiel:
1 2 6 3 4 Keine Permutation
2 4 1 3 Ungerade Permutation
4 1 3 2 Gerade Permutation
3 5 2 1 Keine Permutation


Mfg. xy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.04.2005, 19:20 Uhr
Pablo
Supertux
(Operator)



Zitat:

1 2 6 3 4 Keine Permutation


Tja, Keine Permutation ist falsch, das ist wohl eine Permutation, die Identität, aber Permutation bleibt Permutation.

Die weißt, dass der Grad der permutation (-1)^anazhl_der_Inversionen, also zähle sie einfach.

Ich nehme an, du hast ein Array, oder so:


C++:
int grad(int* permutation, size_t len)
{
    int i;
    int j;
    int inv=0;
    for(i=0; i< len; ++i)
    {
        for(j=i+1; j<len; ++i)
            inv += permutation[i] > permutation[j];
    }

    return (inv % 2 ? -1 : 1);
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 09.04.2005 um 19:21 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: