回 帖 发 新 帖 刷新版面

主题:[转帖]八皇后问题

高斯八皇后 
在一个88的国际象棋棋盘上放置八个皇后,使他们不互相攻击,求解的数量. 

回复列表 (共1个回复)

沙发

program queen;

const qnum=8;
var boardarray[1..qnum] of integer;
m,narray[2..2qnum] of boolean;
yarray[1..qnum] of boolean;
countinteger;

procedure init;
var jinteger;
begin
count=0;
for j=1 to qnum do y[j]=true;
for j=2 to 2qnum do begin m[j]=true;n[j]=true; end;
end;

procedure print;
var jinteger;
begin
inc(count);
write(count8);
for j=1 to qnum do write(board[j]4);
writeln;
end;

procedure try(iinteger);
var jinteger;
begin
for j=1 to qnum do
if y[j] and m[i+j] and n[i-j+qnum+1] then begin
board[i]=j;y[j]=false;m[i+j]=false;n[i-j+qnum+1]=false;
if i=qnum then print else try(i+1);
y[j]=true;m[i+j]=true;n[i-j+qnum+1]=true;
end;
end;

begin
init;
try(1);
writeln('Program end.');
readln;
end. 
这是一个站上给的程序,有更加简便的方法吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册