Курсовая работа: Перебор с возвратом
begin
for i:=1 to N do Y[X[i]]:=i;
X:=Y;
end;
function Cmp(X,Y:Tarray):boolean;
var i:integer;
begin
i:=1;
while (i<=N) and (Y[i]=X[i]) do Inc(i);
if i>N then Cmp:=false
else if Y[i]<X[i] then Cmp:=true else Cmp:=false;
end;
Procedure Solve(i:integer);
var j:integer;f:boolean;
Y:Tarray;
begin
if i<=N then begin
for j:=1 to N do if D_hod(i,j) then begin
Hod(i,j);
Solve(i+1);
O_hod(i,j);
end;
end
else begin
f:=true;
for j:=0 to 7 do begin
Y:=X;
if j and 1 =0 then Sim1(Y);
if j and 2 =0 then Sim2(Y);