hsr//////////////////////////////////////////////
아래는 재귀호출과 ord,chr를 사용했습니다.
다른방법도 있을건데요...
procedure TForm1.permutation(OrgStr : string; pos : integer);
begin
if (pos < 1)or(pos > Length(OrgStr)) then exit;
if (Ord(OrgStr[pos]) <= 90) then begin
ListBox1.Items.Add(OrgStr);
if (pos < Length(OrgStr)) then begin
OrgStr[pos+1] := 'B';
permutation(OrgStr,pos+1);
end
else begin
OrgStr[pos] := Chr(Ord(OrgStr[pos])+1);
permutation(OrgStr,pos);
end;
end
else begin
OrgStr[pos-1] := Chr(Ord(OrgStr[pos-1])+1);
OrgStr[pos] := 'A';
permutation(OrgStr,pos-1);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str : string;
begin
ListBox1.Clear;
str := 'AAA';
permutation(str, Length(str));
end;
hsr//////////////////////////////////////////////
아래는 재귀호출과 ord,chr를 사용했습니다.
다른방법도 있을건데요...
procedure TForm1.permutation(OrgStr : string; pos : integer);
begin
if (pos < 1)or(pos > Length(OrgStr)) then exit;
if (Ord(OrgStr[pos]) <= 90) then begin
ListBox1.Items.Add(OrgStr);
if (pos < Length(OrgStr)) then begin
OrgStr[pos+1] := 'B';
permutation(OrgStr,pos+1);
end
else begin
OrgStr[pos] := Chr(Ord(OrgStr[pos])+1);
permutation(OrgStr,pos);
end;
end
else begin
OrgStr[pos-1] := Chr(Ord(OrgStr[pos-1])+1);
OrgStr[pos] := 'A';
permutation(OrgStr,pos-1);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str : string;
begin
ListBox1.Clear;
str := 'AAA';
permutation(str, Length(str));
end;