Delphi 中用一个数组实现全排列,比如三个数的全排列,我想要的效果是 123 132 321 312 ...

但是用Tmemo.line 显示的效果是
1
2
3
1
3
2
...
for i := 1 to n do
begin
form1.Memo1.Lines.Add( inttostr(arr[i]) );
continue;
end;
求助怎么实现3个一行然后换行

第1个回答  2016-09-27
全排列递归算法:
const
n=3;
type
st=string[n];
var
b:array[1..n] of boolean;
i:integer;

procedure next(i:integer;s:st);
var
p:integer;
t:string[1];
begin
if i>n then writeln(s)
else for p:=1 to n do 
if not b[p] then begin
str(p:1,t);
b[p]:=true;
next(i+1,s+t);
b[p]:=false;
end;
end;

begin
for i:=1 to n do b[i]:=false;
next(1,'');
end.


本回答被提问者和网友采纳
相似回答