все определенные


все определенные выше симметрии шахматной доски, причем не принципиально, в какой последовательности выполняются эти процедуры для каждой конкретной композиции. Проверка «на минимальность» решения производится функцией Cmp, которая возвращает значение true в том случае, когда одно из симметричных решений строго меньше текущего. {не лучший вариант реализации - отсечение на выводе решений} type Tarray=array[1..N] of integer; .... procedure Sim1(var X:Tarray); var i:integer; begin for i:=1 to N do X[i]:=N-X[i]+1; end; procedure Sim2(var X:Tarray); var i,r:integer; begin for i:=1 to N do begin r:=X[i]; X[i]:=X[N-i+1];X[N-i+1]:=r; end; end; procedure Sim3(var X:Tarray); var Y:Tarray; i:integer; 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;
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz