永发信息网

pascal马拦过河卒

答案:1  悬赏:40  手机版
解决时间 2021-11-14 23:30
pascal马拦过河卒
最佳答案

如图,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.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
鱼类适合生长在什么环境的水域中
55毫克化成克是多少
椰子壳怎么吃
堤字怎么读?
你做一个简单的衍纸画要多久?
金家村地址有知道的么?有点事想过去!
舜读什么字
4s店将自产小轿车转作本企业固定资产怎么做帐
这个世界对于单纯的人来说是怎样的
I want my tears back 年少泪愿尝什么意思
八十五五千 80500 8050000 八万五千
北京到青海即墨的火车
水煮蛋怎么煮?直接冷水煮还是等水开了再放鸡
千军易得一将难求(3)
南大山村地址好找么,我有些事要过去,
推荐资讯
萧衍和南齐皇室是什么关系?
各位谁知道晨阳水漆竹炭清丽居系列产品竹炭清
INADA 日本稻田按摩椅S888怎么样 好用吗
邻水2015年5月16日打架事件有无人员伤亡
华联石油(特区站)地址在哪,我要去那里办事,
评书同林转有MP3格式的吗?谢谢
女生想买车落地大概10万左右,自动挡的,有没
【四月是你的谎言】里的宫园薰死得也太突然了
带有厉色的成语
SK-II的眼霜一般要多少钱?
苹果6港澳版和大陆版有什么区别
大家帮忙看看这只英短金渐层的品相怎么样 大
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?