Курсовая работа: Перебор с возвратом
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 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);