ПЕРЕБИРАННЯ ВАРІАНТІВ В ПРОГРАМУВАННІ
if i = n then writs ( H, n) {друкування повного розміщення }
else deps ( H, n, i+1 ) {рекурсивний виклик}
end
end
Функція test задає перевірку допустимості розміщення
function test ( var H : arh; i : nums ) : boolean;
var j : nums; flag : boolean;
begin
j := 1; flag := true;
{перевірка, чи займається нова горизонталь і діагональ}
while ( j < i ) and flag do
begin
flag := ( H[i] <> H[j] ) and ( abs ( H[i]-H[j] ) <> i-j ); j := j+1
end;
test := flag
end
Розробка процедури writs друкування повного розміщення залишається вправою.
Програма розв'язання задачі має такий вигляд:
program Queens ( input, output );
const nm = 20;
type nums = 1..nm;
arh = array[ nums ] of nums;
var H : arh; n : nums;
procedure writs end;
function test end;