骑士游历
【题目描述】
设有一个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
procedure print
begin
if sum>0 then writeln(sum) else writeln(0)
end
procedure 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.
我提供两个功能完善,而且最重要的,我认为算法设计比较好的中国象棋源代码,因为是源码网的,所以可以学习参考下:http://www.codefans.net/soft/1466.shtml
http://www.codefans.net/soft/1289.shtml
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)