首页 > 试题广场 >

(选排列)下面程序的功能是利用递归方法生成从1到n(n10

[填空题]
(选排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数中取k(1<=k<=n)个数的全部可能的排列(不一定按升序输出)。例如,当n=3,k=2时,应该输出(每行输出5个排列):
12 13 21 23 32
31
程序:
Program ex501;
Var
  i, n, k : integer;
  a : array[1..10] of integer;
  count : longint;
Procedure perm2(j : integer);
var
  i, p, t : integer;
begin
  if ( 1 ) then
  begin
    for i:=k to n do
    begin
      inc(count);
      t := a[k];
      a[k] := a[i];
      a[i] := t;
      for  ( 2)     do write(a[p]: 1);
      write(' ');
      t := a[k];
      a[k] := a[i];
      a[i] := t;
      if (count mod 5 = 0) then writeln;
    end;
    exit;
  end;
  for i:=j to n do
  begin
    t := a[j];
    a[j] := a[i];
    a[i] := t;
    3
    t:=a[j];
    4
  end
end;
begin
  writeln('Entry n,k (k<=n):');
  read(n, k);
  count := 0;
  for i:=1 to n do a[i] := i;
  5
end. 

我不会
发表于 2022-04-17 15:01:04 回复(0)