pascal马栏过河卒修改棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有

pascal马栏过河卒修改
棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”.
棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过15的整数),同样马的位置坐标是需要给出的.现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步.
我的程序:
var
CO:array[1..1000,1..1000] of longint;
H,S:array[1..1000] of longint;
kill,e:array[0..255] of boolean;
ENDx,ENDy,xh1,xh2,xh3,hx,hy,key,Bx,By:longint;
boo1,boo2:boolean;
procedure try;
begin
for xh1:=1 to 2 do
if (CO[Bx+H[xh1],By+S[xh1]]=0) and (Bx+H[xh1]>=0) and (By+S[xh1]>=0) and (Bx+H[xh1]
带酒窝的老鼠 1年前 已收到1个回答 举报

那时风景来时路 幼苗

共回答了24个问题采纳率:87.5% 举报

lz,马拦过河卒这题实在是简单,可以用搜索、递归、递推等方法,我把源代码给你把,是我自己编的,求采纳
const
dx:array[1..8] of integer=(-2,-1,1,2,2,1,-1,-2);
dy:array[1..8] of integer=(1,2,2,1,-1,-2,-2,-1);
var
n,m,x,y,i,j,ans:longint;
g:array[0..20,0..20] of 0..1;
procedure so(x,y:longint); //定义搜索过程
begin
if (x=n)and(y=m) then //如果到达目的地,就累加路径数
inc(ans)
else begin
if (x

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.017 s. - webmaster@yulucn.com