前言:连全排列都没有怎么行!
题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入输出格式
输入格式:n(1≤n≤9)
输出格式:由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。
输入输出样例
read.in
3
write.out
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
简单的深搜(我得学学暴力了)
var
a:array[0..10]of longint;
b:array[0..10]of boolean;
n,i:longint;
procedure dfs(deep:longint);
var
i:longint;
begin
if deep>n then begin
for i:=1 to n do write(a[i]:5);
writeln;
exit;
end;
for i:=1 to n do
begin
if b[i] then begin
b[i]:=false;
a[deep]:=i;
dfs(deep+1);
b[i]:=true;
end;
end;
end;
begin
read(n);
for i:=1 to n do b[i]:=true;
dfs(1);
end.