题目:
给出一个n, 请输出n的所有全排列
分析
dfs不解释
代码:
const
maxn=10;
var
a:array [0..maxn] of longint;
flag:array [0..maxn] of boolean;
n:longint;
procedure print;
var
i:longint;
begin
write(a[0]);
for i:=1 to n-1 do
write(' ',a[i]);
writeln;
end;
procedure dfs(dep:longint);
var
i:longint;
begin
if dep=n then
begin
print;
exit;
end;
for i:=1 to n do
if flag[i] then
begin
a[dep]:=i;
flag[i]:=false;
dfs(dep+1);
flag[i]:=true;
end;
end;
begin
readln(n);
fillchar(flag,sizeof(flag),true);
dfs(0);
end.