(全排列)下面程序的功能是利用递归方法生成从 1 到 n(n<10)的 n 个数的全部可能的排列(不一 定按升序输出)。例如,输入 3,则应该输出(每行输出 5 个排列):
123 132 213 231 321
312
程序:
Program ex401; Var
i,n,k:integer;
a:array[1..10] of integer;
count:longint; {变量 count 记录不同排列的个数,这里用于控制换行} Procedure perm(k:integer);
var j,p,t:integer;
begin
if k=n then
begin
inc(count);
for p:=1 to k do
write(a[p]:1);
write(' ');
if ( count mod 5=0 ) then writeln;
exit;
end;
for j:=k to n do
begin
t:=a[k]; a[k]:=a[j]; a[j]:=t;由OIFans.cn收集
perm(k+1) ;
t:=a[k]; a[k]:=a[j];a[j]:=t ;
end
end;
begin
writeln('Entry n:');
read(n);
count:=0;
for i:=1 to n do a[i]:=i;
perm(1) ;
end.