изоморфны. Следующие
изоморфны.
Следующие рисунки иллюстрируют сказанное и поясняют ввод используемых структур данных.
Структуры данных.
Up:array[2..16] of boolean;{признак занятости диагоналей первого типа}
Down:array[-7..7] of boolean;{признак занятости диагоналей второго типа}
Vr:array[1..8] of boolean;{признак занятости вертикали}
X:array[1..8] of integer;{номер вертикали, на которой стоит ферзь на каждой горизонтали}
Далее идет объяснение “кирпичиков”, из которых “складывается” решение (технология “снизу вверх”).
procedure Hod(i,j:integer); {сделать ход}
begin
X[i]:=j;Vr[j]:=false;Up[i+j]:=false;Down[i-j]:=false;
end;
procedure O_hod(i,j:integer);{отменить ход}
begin
Vr[j]:=true;Up[i+j]:=true;Down[i-j]:=true;
end;
function D_hod(i,j:integer);
{проверка допустимости хода в позицию (i,j)}
begin
D_hod:=Vr[j]andUp[i+j]andDown[i-j];
end;
Основная процедура поиска одного варианта расстановки ферзей имеет вид:
procedure Solve(i:integer;var q:boolean);
var
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа