pascal马拦过河卒
答案:1 悬赏:40 手机版
解决时间 2021-11-14 23:30
- 提问者网友:
- 2021-11-14 15:46
pascal马拦过河卒
最佳答案
- 五星知识达人网友:蕴藏春秋
- 2021-11-14 17:12
如图,A点有一个过河卒,需要走到目标B点,可以向下或向右走。
同时在棋盘上的某一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点为对方马的控制点。如上图,P1……P5,C为对方吗马的控制点,卒不能通过。
棋盘用坐标表示,点a(0,0),点b(n,m)(n,m为不超过20的整数),马的坐标是C点(x,y)(C<>a,C<>b)。现在要求你计算卒从A点能够到达B点的路径条数。
输入格式:n,m,x,y (n,m)为B点的坐标,(x,y)为对方马的坐标。
输出格式:一个整数(路径条数)。
输入样例:6 6 3 2
输出样例:17
参考程序:
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
f:array[0..20,0..20] of longint;
g:array[-2..22,-2..22] of boolean;
i,j,n,m,x,y:integer;
begin
readln(n,m,x,y);
fillchar(g,sizeof(g),true);
g[x,y]:=false;
for i:=1 to 8 do g[x+dx[i],y+dy[i]]:=false;
if g[0,0] then f[0,0]:=1;
for j:=1 to m do
if g[0,j] then f[0,j]:=f[0,j-1];
for i:=1 to n do
if g[i,0] then f[i,0]:=f[i-1,0];
for i:=1 to n do
for j:=1 to m do
if g[i,j] then f[i,j]:=f[i-1,j]+f[i,j-1];
writeln(f[n,m]);
end.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯