中国象棋跳马路线设计程序
发布网友
发布时间:2022-12-08 20:18
我来回答
共1个回答
热心网友
时间:2024-12-03 06:48
是不是这题.
骑士游历
【题目描述】
设有一个n*m的棋盘(2<=n<=50,2<=m<=50),如下图,在棋盘上任一点有一个中国象棋马,
马走的规则为:
1.马走日字 2.马只能向右走
任务:当N,M 给出之后,同时给出马起始的位置和终点的位置,试找出从起点到终点的所有路径的数目.
例如:(N=10,M=10),(1,5)(起点),(3,5)(终点)
输出:2(即由(1,5)到(3,5)共有2条路径)
输入格式:n,m,x1,y1,x2,y2(分别表示n,m,起点坐标,终点坐标)
输出格式:路径数目(若不存在从起点到终点的路径,输出0)
【样例输入1】
10 10 1 5 3 5
【样例输出1】
2
程序:
const max=10;
dx:array[1..4] of longint=(1,2,1,2);
dy:array[1..4] of longint=(2,1,-2,-1);
var n,m,x1,x2,y1,y2,i,j,sum:longint;
board:array[-1..max+2,-1..max+2] of longint;
dir:array[0..max*max] of longint;
procere print;
begin
if sum>0 then writeln(sum) else writeln(0);
end;
procere search(dep,x,y:longint);
var i:longint;
begin
if (x=x2) and (y=y2) then inc(sum) else
for i:=1 to 4 do
if (x+dx[i]<=x2) and (y+dy[i]>=1) and (y+dy[i]<=m)
then
begin
search(dep+1,x+dx[i],y+dy[i]);
end;
end;
begin
readln(n,m,x1,y1,x2,y2);sum:=0;
search(1,x1,y1);print;
end.