四皇后问题(Pascal)

【问题描述】在4×4的棋盘上安置4个皇后,要求任意两个皇后不在同一行,同一列、同一条对角线上,输出所有可能的皇后放置方案。用Pascal解决。急!!!... 【问题描述】
在4×4的棋盘上安置4个皇后,要求任意两个皇后不在同一行,同一列、同一条对角线上,输出所有可能的皇后放置方案。

用Pascal解决。急!!!
展开
 我来答
yingsihaoysh
2011-05-06 · TA获得超过583个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:251万
展开全部
利用回溯算法解决
program Exp1(input,output);
const
n=4; //皇后数
var
ans:longint;
a,b,c:array[-100..100] of boolean;
//a[i]表示第i列是否被占有
//b[i]表示第i条左斜对角线是否被占有
//c[i]表示第i条右斜对角线是否被占有
procedure search(i:longint); //按行搜索摆放第i个皇后
var
j:longint;
begin
if i>n then //摆完了
begin
inc(ans); //计数器加1
exit;
end;
for j:=1 to n do //搜索摆在第几列上
if a[j] and b[i+j] and c[i-j] then
begin
a[j]:=false; //标志为占有
b[i+j]:=false;
c[i-j]:=false;
search(i+1);
a[j]:=true; //回溯
b[i+j]:=true;
c[i-j]:=true;
end;
end;
begin
fillchar(a,sizeof(a),true);
fillchar(b,sizeof(b),true);
fillchar(c,sizeof(c),true);
ans:=0;
search(1);
writeln(ans);
end.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式