Ich habe mir jetzt einmal einen Teil des Codes geladen und angepasst. Das Problem mit der Laufzeit bei Kombinationen mit mehr als 6 Zeichen ist da. Ich habe aber noch eine anderes Problem und zwar gibt es bei mehr als 11 Zeichen einen Integerüberlauf.
Delphi-Quellcode:
procedure Form1.Button1Click(Sender: TObject);
{$APPTYPE CONSOLE}
const anz_c : integer = 12;
type
TItem = char;
TArray =
array[0..12]
of TItem;
procedure Permutation(K: Integer;
var A: TArray);
var
I, J : Integer;
Tmp : TItem;
begin
for I:= 1
to (anz_c + 1)
do
begin
J := K
mod I;
Tmp := A[J];
A[J] := A[I-1];
A[I-1]:= Tmp;
K := K
div I;
end;
end;
var
A : TArray;
I, K, Count, anz : Integer;
S, S1, S2 : ShortString;
Source : TArray;
begin
for I := 0
to anz_c
do source[i] := chr(65+i);
Count:= 1;
anz := 0;
I:= Length(A);
while I > 1
do
begin
Count:= Count * I;
Dec(I);
end;
S:= '
';
for K:= 0
to Count - 1
do
begin
A:= Source;
Permutation(K, A);
S1:= '
';
for I:= 0
to anz_c
do
begin
s2 := A[I];
S1:= S1 + S2;
end;
inc(anz);
S:= S + '
** ' + S1;
if Length(S) > 40
then
begin
Writeln(S);
S:= '
';
end;
end;
if Length(S) > 0
then Writeln(S);
writeln('
Anz : ', anz);
Readln;
end;
Ideen gesucht