Реализовать функцию, генерирующую все перестановки чисел от 0 до N-1 — Pascal(Паскаль)

{ генерация перестановок }
uses crt;
const n = 4; { количество элементов в перестановке}
var a:array[1..n] of integer;
    j:integer;{счетчик}
    kol : longint;{количество перестановок}
procedure generate (l,r:integer;var k:longint);
var i,v:integer;
begin
if (l=r) then
  begin
    for i:=1 to n do write(a[i],' ');
    writeln;
    k:=k+1;
  end
else
  begin
    for i := l to r do
      begin
        v:=a[l]; a[l]:=a[i]; a[i]:=v; {обмен a[i],a[l]}
        generate(l+1,r,k); {вызов новой генерации}
        v:=a[l]; a[l]:=a[i]; a[i]:=v; {обмен a[i],a[l]}
      end;
  end;
end;
begin
clrscr;
for j := 1 to N do
A[j]:=j-1;
generate( 1,n,kol);
writeln('kol=',kol);
readln
end.

Leave a Comment

76 − = 68