求PASCAL八皇后宽搜程序

来源:百度知道 编辑:UC知道 时间:2024/07/04 05:37:20
1.用宽搜做
2.没有文件,记录、指针等东西
3.尽量简短

不同意楼上,是你水平不行,不是宽搜不行。
换8位的8进制数表示状态的话,总数是8*8!=400000多点,绝对0ms出解

var
a:array[1..10] of integer;
b:array[1..10] of boolean;
c:array[1..20] of boolean;
d:array[-9..9] of boolean;
n:integer;
procedure print;
var i:integer;
begin
for i:=1 to n do write(a[i],' ');
writeln;
end;
procedure try(t:integer);
var j:integer;
begin
if t>n then
begin
print;
exit;
end;
for j:=1 to n do
if b[j] and c[t+j] and d[t-j] then
begin
a[t]:=j;
b[j]:=false;
c[t+j]:=false;
d[t-j]:=false;
try(t+1);
b[j]:=true;
c[t+j]:=true;
d[t-j]:=true;
end;
End;
begin
assign(input,'queen.in');
assign(output,'queen.out');
reset(input);
rewrite(output);