收藏 分享(赏)

马拦过河卒:pascal(题目,分析,样例输入输出,源程序,感受).doc

上传人:jinchen 文档编号:8284844 上传时间:2019-06-18 格式:DOC 页数:3 大小:163KB
下载 相关 举报
马拦过河卒:pascal(题目,分析,样例输入输出,源程序,感受).doc_第1页
第1页 / 共3页
马拦过河卒:pascal(题目,分析,样例输入输出,源程序,感受).doc_第2页
第2页 / 共3页
马拦过河卒:pascal(题目,分析,样例输入输出,源程序,感受).doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、马拦过河卒源程序名 knight.?(pas, c, cpp) 可执行文件名 knight.exe输入文件名 knight.in 输出文件名 knight.out【问题描述】棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒” 。棋盘用坐标表示,A 点(0, 0)、B 点(n, m)(n, m 为不超过 15 的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走

2、一步。【输入】一行四个数据,分别表示 B 点坐标和马的坐标。【输出】一个数据,表示所有的路径条数。【样例】knight.in knight.out6 6 3 3 6输入: (4 2 8 8) (4 3 9 8) 输出: 4 10源程序:program ghz;var z:array1100,1100of boolean;p,q:array1100,1100of byte;xb,yb,xm,ym,s:integer;pest:boolean;procedure falss;beginzxm,ym:=false;zxm-1,ym-2:=false;zxm-2,ym-1:=false;zxm-2,y

3、m+1:=false;zxm-1,ym+2:=false;zxm+1,ym-2:=false;zxm+2,ym-1:=false;zxm+1,ym+1:=false;zxm+1,ym+2:=false;end;procedure writee(x,y:integer);var u:byte;beginif (x=1) and (y=1) then begin writeln( 1,1 ); writeln; endelsebeginwrite( ,x,y, );writee(px,y,qx,y);end;end;procedure print;var i,j:integer;beginpest

4、:=false;s:=s+1;writee(xb,yb);end;procedure try(x,y:integer);var i,j,w:integer;beginif (xxb) or (yyb) then i:=1 elseif (x=xb) and (y=yb) then printelsefor i:=1 to 2 dobeginif (i=1) and (zx+1,y=true) then begin px+1,y:=x; qx+1,y:=y; try(x+1,y); end;if (i=2) and (zx,y+1=true) then begin px,y+1:=x; qx,y

5、+1:=y; try(x,y+1); end;end;end;beginassign(input,word.in);assign(output,word.out);reset(input);rewrite(output);readln(xb,yb,xm,ym);fillchar(z,sizeof(z),true);falss;pest:=true;s:=0;try(1,1);if pest=true then writeln(Sorry!No Answer);writeln(There are ,s, answers!);close(input);close(output);end.感受:初始化部分偏长需要改进,文件读入读出,而且考虑到了无解情况,总体比较全面。第一次自己做对了,好高兴也!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报