pascal 编程题:骑士游历 急!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/19 05:40:09
骑士游历
问题描述:如下图所示有m*n一个棋盘,在棋盘左下角的A(1,1)点,有一个中国象棋〈马〉,并约定马走的规则:
①走日字;②只能向右走。
找出从A点(1,1)到B点(m,n )的路径条数。

输入:8 9
输出:10
最好输出所有路径条数及所有路径。
输出路径条数及任意一条具体路径。

const dx:array[1..4] of integer=(2,2,1,1);
dy:array[1..4] of integer=(1,-1,2,-2);
type map=record
x,y:integer;
end;
var I,n,m:integer; a:array[0..50] of map;
procedure dfs(i:integer);
var j:integer;
begin
for j:=1 to 4 do
if (a[i-1].x+dx[j]>0) and (a[i-1].x+dx[j]<=n) and (a[i-1].y+dy[j]>0) and (a[i-1].y+dy[j]<=m) then {判断是否在棋盘上}
begin a.x:=a[i-1].x+dx[j];
a.y:=a[i-1].y+dy[j];
if (a.x=n) and (a.y=m) then
begin write(‘(‘,1,’,’,1,’)’);
for j:=2 to I do write(‘->(’,a[j].x,’,’,a[j].y,’)’);
halt;{输出结果并退出程序}
end;
dfs(i+1);{搜索下一步}
a.x:=0;a.j:=0;