pascal马栏过河卒修改棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/23 14:18:31
![pascal马栏过河卒修改棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制](/uploads/image/z/6838095-39-5.jpg?t=pascal%E9%A9%AC%E6%A0%8F%E8%BF%87%E6%B2%B3%E5%8D%92%E4%BF%AE%E6%94%B9%E6%A3%8B%E7%9B%98%E4%B8%8AA%E7%82%B9%E6%9C%89%E4%B8%80%E4%B8%AA%E8%BF%87%E6%B2%B3%E5%8D%92%2C%E9%9C%80%E8%A6%81%E8%B5%B0%E5%88%B0%E7%9B%AE%E6%A0%87B%E7%82%B9.%E5%8D%92%E8%A1%8C%E8%B5%B0%E7%9A%84%E8%A7%84%E5%88%99%EF%BC%9A%E5%8F%AF%E4%BB%A5%E5%90%91%E4%B8%8B%E3%80%81%E6%88%96%E8%80%85%E5%90%91%E5%8F%B3.%E5%90%8C%E6%97%B6%E5%9C%A8%E6%A3%8B%E7%9B%98%E4%B8%8AC%E7%82%B9%E6%9C%89%E4%B8%80%E4%B8%AA%E5%AF%B9%E6%96%B9%E7%9A%84%E9%A9%AC%2C%E8%AF%A5%E9%A9%AC%E6%89%80%E5%9C%A8%E7%9A%84%E7%82%B9%E5%92%8C%E6%89%80%E6%9C%89%E8%B7%B3%E8%B7%83%E4%B8%80%E6%AD%A5%E5%8F%AF%E8%BE%BE%E7%9A%84%E7%82%B9%E7%A7%B0%E4%B8%BA%E5%AF%B9%E6%96%B9%E9%A9%AC%E7%9A%84%E6%8E%A7%E5%88%B6)
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]
pascal马栏过河卒修改棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制
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