八皇后问题如何判断在同一条对角线呢pascal

递归和回溯都明白,就是不知道如何判断在同一条对角线上。我反应比较迟钝,希望详细些... 递归和回溯都明白,就是不知道如何判断在同一条对角线上。
我反应比较迟钝,希望详细些
展开
 我来答
vcvycy2010
2010-07-26 · 超过10用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:29.6万
展开全部
\这样的斜的如果同一对角线,那么x1-y1=x2-y2;
/这样的斜线,同一对角线,那么x1+y1=x2+y2;
ok。。。
这是最正确的答案,,,给点鼓励。。。
宝城俊
2010-07-28 · 超过20用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:21.8万
展开全部
3L正解,但可以说的详细点,开一个数组,一个皇后占得的斜线可以用它的x1,y1坐标表示,如2,1位置的皇后,除了占横竖的以外,还有斜的f3【3】和f4【1】,判断时几个数组一起判,与横竖的占位是一样的,注意要开大一点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
541600517
推荐于2016-12-01 · 超过30用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:81.4万
展开全部
下面是我程序中的一个函数:

function try(i:integer):boolean; {判断第i个皇后当前位置是否可放置}
var j:integer;
begin
try:=true; {true表示该处可放置}
for j:=1 to i-1 do
if (a[j]=a[i]) or (i-j=abs(a[i]-a[j])) then try:=false;
{第一个条件是同列(由于是深搜,不需要判断同行),第二个条件是同对角线}
end;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诚挚又恩爱的国宝v
2010-07-26
知道答主
回答量:9
采纳率:0%
帮助的人:10.7万
展开全部
你说的是‘N皇后问题’吧。。。
如果是。。。我就继续。。。
算了,我猜应该是。。。。
皇后a[i,j] 皇后b[m,n]
if abs(i-m)=abs(j-n) then
在统一对角线上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
860270688
2010-08-01 · 超过16用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:45.8万
展开全部
program eightquccns;
var
x:array[1..8] of integer;
a,b,c:array[-7..16] of boolean;
i,c:integer;
procedure print;
var
i:integer;
begin
for i:=1 to 8 do
write(x[i]:2);
inc(c);
writeln('count=',c);
end;
procedure try(i:integer);
var
j:integer;
begin
for i:=1 to 8 do
begin
if a[j] and c[i-j] and b[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;c[i-j]:=true;b[i+j]:=true;
end;end;end;
begin
for i:=1 to 8 do
a[i]:=true;
for i:=-7 to 7 do
c[i]:=true;
for i:=2 to 16 do
b[i]:=true;
c:=0;
try(1);end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式