Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Prøv noe a la disse to prosedyrene (Swap og Perm):

 TForm1 = Class (TForm)
   LB1: TListBox;
   Memo1: TMemo;
   Button1: TButton;
   Procedure Button1Click (Sender: TObject);
 Private
   { Private declarations }
 Public
   { Public declarations }
   Procedure Swap (var V: Array Of Integer; I, J: Integer);
   Procedure Perm (Var V: Array Of Integer; n, I: Integer);
 End;

Var
 Form1                          : TForm1;
 V                              : Array Of Integer;

Procedure TForm1.Swap (var V: Array Of Integer; I, J: Integer);
Var
 T                              : Integer;
Begin
 T:= V (.I.);
 V (.I.):= V (.J.);
 V (.J.):= T;
End;


Procedure TForm1.Perm (Var V: Array Of Integer; n, I: Integer);
Var
 J                              : Integer;
 S                              : String;
Begin
 If I = n Then
   Begin
     S:= '';
     For J:= 0 To n -1 Do
       Begin
         S:= S + ' '+ IntToStr (V (.J.));
       End;
     LB1.Items.Add (S);
   End
 Else
   For J:= I To n - 1 Do
     Begin
       Swap (V, I, J);
       Perm (V, n, I + 1);
       Swap (V, I, J);
     End;
End;



Procedure TForm1.Button1Click (Sender: TObject);
Var
 L, I                           : Integer;
Begin
 L:= Memo1.Lines.Count;
 SetLength (V, L);

 For I:= 0 To Memo1.Lines.Count - 1 Do
   V (.I.):= StrToInt (Memo1.Lines (.I.));
 Perm (V, L, 0);
End;

 

Jeg bruker Memo1 som input av tallene, ett tall pr. linje.

Listboksen (LB1) er for utskrift av permutasjonene.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...