跳马问题:
<wbr><wbr><wbr><wbr> 如图,在半张中国象棋的棋盘上(8X4),一只马从左下角跳到右上角,只允许往右跳,不允许往左跳,问能有多少种跳的方案。<br> 分析:此题可以采取递归的方法。站在固定的一个点上,最多可以有4个方向可以跳,设所在点坐标为x,y,则,dx=(1,2,2,1),dy=(2,1,-1,-2)(如图)。递归的边界是到达目标坐标点(8,4)。<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><img title="跳马问题" height="300" alt="" src="http://images.cnblogs.com/cnblogs_com/gzydn/jump02.jpg" width="245" border="0"></wbr></wbr>
![跳马问题 跳马问题](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
Code
<wbr>1</wbr>
//跳马01
<wbr>2</wbr>
program<wbr>tiaoma01;<br></wbr><wbr>3</wbr>
const
<wbr>4</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>mbx</wbr></wbr></wbr></wbr></wbr></wbr>=8;<wbr>mby</wbr>=4;<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>//目标点所在的坐标
<wbr>5</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>dx:</wbr></wbr></wbr></wbr></wbr></wbr>array[1..4]of<wbr>integer</wbr>=(1,2,2,1);<wbr><wbr></wbr></wbr>//可以移动的坐标位移
<wbr>6</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>dy:</wbr></wbr></wbr></wbr></wbr></wbr>array[1..4]of<wbr>integer</wbr>=(2,1,-1,-2);
<wbr>7</wbr>
var
<wbr>8</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>num:integer;<wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>//可以跳的方案数
<wbr>9</wbr>![跳马问题](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
10
procedure<wbr>jump(x,y:integer);<br></wbr>11
var<wbr>k,x1,y1:integer;<br></wbr>12
<wbr><wbr><wbr><wbr>t1,t2,t3:boolean;<wbr><wbr><br></wbr></wbr></wbr></wbr></wbr></wbr>13
begin
14
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>for<wbr>k:</wbr>=1<wbr></wbr>to<wbr></wbr>4<wbr></wbr>do
15
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>begin
16
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>x1:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>=x+dx[k];
17
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>y1:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>=y+dy[k];
18
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>t1:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>=(x1>=0)and(x1<=mbx);
19
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>t2:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>=(y1>=0)and(y1<=mby);
20
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>t3:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>=(x1=mbx)and(y1=mby);
21
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>if(t1<wbr></wbr>and<wbr>t2)<wbr></wbr></wbr>then
22
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>if<wbr>t3<wbr></wbr></wbr>then<wbr>inc(num)<br></wbr>23
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>else<wbr>jump(x1,y1);<wbr></wbr></wbr>//递归
24
<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>end;
25
end;
26![跳马问题](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
27
begin
28
<wbr><wbr><wbr><wbr>num:</wbr></wbr></wbr></wbr>=0;
29
<wbr><wbr><wbr><wbr>jump(</wbr></wbr></wbr></wbr>0,0);
30
<wbr><wbr><wbr><wbr>writeln(num);<br></wbr></wbr></wbr></wbr>31
<wbr><wbr><wbr><wbr>readln;<br></wbr></wbr></wbr></wbr>32
end.
33