PASCAL 回溯

来源:百度知道 编辑:UC知道 时间:2024/09/24 14:06:13
列出所有1 到n 的自然数的排列
如:
输入:3
输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

方法是回溯法
program xy;
var
n,i,k,j:integer;
a:array[0..100]of integer;
b:array[0..100]of boolean;

procedure find(k:integer);
var j:integer;
begin
if k=n+1 then begin writeln;for i:=1 to n do write(a[i],' ');
end ;
for j:=1 to n do
begin
if b[j] then
begin
b[j]:=false;
a[k]:=j;
find(k+1);
b[j]:=true;
end;

end;
end;

begin
readln(n);
fillchar(b,sizeof(b),true);
fillchar(a,sizeof(a),0);
find(1);
readln;
end.

这不是全排列么