不是VIP会员,不能显示答案

题目解答

题目:
(全排列)下面程序的功能是利用递归方法生成从 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.
考点:
分析:
解答:
评论:
老师: