PASCAL八皇后问题(回溯法)

varx:array[1..8]ofinteger;a,b,c:array[-7..16]ofboolean;i:integer;procedureprint;vark:... var
x:array[1..8]of integer;
a,b,c:array[-7..16]of boolean;
i:integer;
procedure print;
var
k:integer;
begin
for k:=1to 8do
write(x[k]:4);
writeln
end;
procedure try(i:integer);
var
j:integer;
begin
for j:=1to 8do
if a[j]and b[i+j]and c[i-j]
then begin
x[i]:=j;
a[j]:=false;
b[i+j]:=false;
c[i-j]:=false;
if i<8 then try(i+1)
else print;
a[j]:=true;
b[i+j]:=true;
c[i-j]:=true
end
end;
begin
for i:=-7 to 16 do
begin
a[i]:=true;
b[i]:=true;
c[i]:=true
end;
try(1)
end.

以上是书上的,书上解析说
“当某个皇后占用了位置(i,j){横坐标i,纵坐标j}时,将3个数组的对应元素设置为false。即a[j]:=false,b[i+j]:=false,c[i-j]:=false.”我想问一下a,b,c这三个数组分别代表什么?a[j],b[i+j],c[i-j]又是什么?
展开
 我来答
redflowerfu
2008-07-10 · TA获得超过5288个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:1726万
展开全部
额?答过这一问了。不介意再给20分吧
a[j]表示第j列是否被占用
b[i+j]表示从右上到左下的i+j号斜线(左上角第一条为2号,右下角第一条为16号)是否被占用
c[i-j]表示从左上到右下的i-j号斜线(右上角第一条为7号,左下角第一条为-7号)是否被占用
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式