pascal 骑士游历 程序找错

棋盘,n*m,要求:马走的规则为:1.马走日字2.马只能向右走当N,M输入之后,找出一条从左下角到右上角的路径vardx:array[1..4]ofinteger=(1,... 棋盘,n*m,要求:
马走的规则为:1.马走日字 2.马只能向右走
当N,M 输入之后,找出一条从左下角到右上角的路径

var
dx:array[1..4]of integer=(1,2,1,2);{方向}
dy:array[1..4]of integer=(2,1,-2,-1);
n,m,a,b:integer;
xy:array[1..1000,1..2]of integer;{存储的走过的坐标}
v:array[0..100,0..100]of boolean;{是否走过}
procedure dfs(x,y,z:integer);{x,y:坐标,z:路径数}
var
xx,yy,i,j:integer;
begin
if (x=n)and(y=m)then{如果到达,输出}
begin
for j:=1 to z-1 do
writeln('(',xy[j,1],' ',xy[j,2],')');
writeln('(',n,' ',m,')');
halt;
end;
for i:=1 to 4 do
begin
xx:=x+dx[i];yy:=y+dy[i];
if (xx>0)and(xx<=n)and(yy>0)and(yy<=m)and(not v[xx,yy])then
begin
xy[z+1,1]:=xx;xy[z+1,2]:=yy;{记录可行的坐标}
v[xx,yy]:=true;
dfs(xx,yy,z+1);
v[xx,yy]:=false;{回溯}
end;
end;
end;
begin
readln(n,m);
for a:=1 to n do
for b:=1 to m do
v[a,b]:=false;
dfs(0,0,0);
end.

会加悬赏的
展开
 我来答
aksdrxzd01
2010-10-10 · TA获得超过482个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:228万
展开全部
题目说明还不够详细
问题在输出方面
如果棋盘左上角的坐标是(1,1),右下角的坐标是(n,m),
那么dfs(0,0,0);就要改成dfs(1,1,0);
writeln('(',xy[j,1],' ',xy[j,2],')');改为writeln('(',xy[j,1],' ',m-xy[j,2]+1,')');
writeln('(',n,' ',m,')');改成writeln('(',n,' ',1,')');
发明2008
2010-10-10 · 超过16用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:28万
展开全部
问题:棋盘,n*m,要求:
马走的规则为:1.马走日字 2.马只能向右走
当N,M 输入之后,找出一条从左下角到右上角的路径

回复:

其实,你这程序并无大碍,经过多次调试,它一直都是正确的。在我们的固定思维中,棋盘上第一个格子是(0,0),但是,如果题目有特别规定,那就要按规矩行事。你这程序也相同。

以上就是我的答复,请楼主定夺。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式