j:integer; begin j:=0; repe
j:integer;
begin
j:=0;
repeat
inc(j);q:=false;{цикл по вертикали}
if D_hod(i,j) then begin Hod(i,j);
if i<8 then begin Solve(i+1,q);
if not q then O_hod(i,j);
end else q:=true;{решение найдено}
end;
until q or (j=8);
end;
Возможные модификации.
Поиск всех решений. Для доски 8*8 ответ 92.
Procedure Solve(i:integer);
var j:integer;
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
Inc(S);{счетчик числа решений, глобальная переменная}
Print;{вывод решения}
end;
end;
Поиск только не симметричных решений. Для доски 8*8 ответ 12.
Эта модификация требует предварительных разъяснений. Из каждого решения задачи о ферзях можно получить ряд других при помощи вращений доски на 90о, 180о и 270о и зеркальных отражений относительно линий , разделяющих доску пополам (система координат фиксирована). Доказано, что в общем случае
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа