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

题目解答

题目:
(选排列)下面程序的功能是利用递归方法生成从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
j=k then
begin
for i:=k to n do
begin
inc(count);
t:=a[k]; a[k]:=a[i]; a[i]:=t;
for p:=1 to k 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;
perm2(j+1) ;
t:=a[j]; a[j]:=a[i];a[i]:=t ;
end
end; begin
writeln('Entry n,k (k<=n):'); read(n,k);
count:=0;
for i:=1 to n do a[i]:=i;
 perm2(1);
end.
考点:
分析:
解答:
评论:
老师: