求各位大神帮小弟找一下程序的错误
pascal吧
全部回复
仅看楼主
level 1
1003889476 楼主
是关于跳马的问题,m*n的棋盘,从(0,0)跳到点(p,q)
2014年02月12日 07点02分 1
level 1
1003889476 楼主
program tiaoma;
var s,m,n,p,q,top:longint;
x,y:array[0..1000] of integer;
dx:array[1..4] of integer=(1,2,2,1);
dy:array[1..4] of integer=(-2,-1,1,2);
procedure print;
var i:integer;
begin
for i:=1 to top do
write('(',x[i],',',y[i],')');
writeln;
inc(s);
end;
procedure research(dep:integer);
var k,i:integer;
begin
if (x[top]=p)and(y[top]=q) then begin print;exit;end;
for i:=1 to 4 do
if ((x[top]+dx[i])<=m) and((y[top]+dy[i])<=n) and((y[top]+dy[i])>=0) then
begin
top:=top+1;
x[top]:=x[top]+dx[i];
y[top]:=y[top]+dy[i];
research(dep+1);
top:=top-1;
x[top]:=x[top]-dx[i];
y[top]:=y[top]-dy[i];
end; end;
begin
read(m);
read(n);
read(p);
read(q);
top:=0;
s:=0;
fillchar(x,sizeof(x),0);
fillchar(y,sizeof(y),0);
research(1) ;
write(s)
end.
2014年02月12日 07点02分 2
level 11
1 x[top]+dx[i]>=0
2 入栈时
x[top]:=x[top-1]+dx[i];
y[top]:=y[top-1]+dy[i];
3退栈时删掉
x[top]:=x[top]-dx[i];
y[top]:=y[top]-dy[i];
2014年02月12日 12点02分 3
感谢大神指正,感激不尽
2014年02月12日 12点02分
回复 1003889476 :对了吗,不用谢。
2014年02月12日 12点02分
1