过河卒,24点 pascal语言程序.(我是初学者写的易懂点 能省过程、函数尽量省)

问题描述:

过河卒,24点 pascal语言程序.(我是初学者写的易懂点 能省过程、函数尽量省)
过河卒:
棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下、或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”.
棋盘用坐标表示,A点(0,0)、B点(n,m)(其中:n,m为不超过15的数),同样马的位置坐标是需要给出的.
任务:现在要求你编写一个程序来计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步.
【输入格式】
输入文件中仅一行为四个整数,分别表示B点坐标和马的坐标.
【输出格式】
输出文件中仅一行为一个整数,表示所有的路径条数.
【输入输出样例】
输入:
6 6 3 3
输出:
6
24点:
【问题描述】
几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”.您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算,要求运算结果等于24.
您可以使用的运算只有:+,-,*,/,您还可以使用()来改变运算顺序.注意:所有的中间结果须是整数,所以一些除法运算是不允许的(例如,(2*2)/4是合法的,2*(2/4)是不合法的).下面我们给出一个游戏的具体例子:
若给出的四个操作数是:1、2、3、7,则一种可能的解答是:1+2+3*7=24.
【输入格式】
输入文件中仅一行为四个1到9之间的自然数.
【输出格式】
如果有解的话,只需要输出一个解.输出的是三行数据,分别表示运算的步骤.其中:第一行是输入的两个数和一个运算符和运算后的结果,第二行是第一行的结果和一个输入的数据、运算符、运算后的结果;第三行是第二行的结果和输入的一个数、运算符和“=24”.如果两个操作数有大小的话则先输出大的.
如果没有解,则输出“No answer!”
【输入输出样例】
输入:
1 2 3 7
输出:
2+1=3
7*3=21
21+3=24
最好告诉我算法简述.
1个回答 分类:综合 2014-11-12

问题解答:

我来补答
program E1_1; {knight}
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);
这个就是传说中的增量矩阵.其实也没那么神秘,就是一张表,有8种变化状态,每种状态对应了一个delta
x和y,比如第一种变化,x坐标减小2,y坐标加1.表示在棋盘上的8种行走方式.
var
n,m,x,y,i,j: byte;
g:array[0..20,0..20] of 0..1;
c:longint;
infile,outfile:text;
//这边是关键步骤
procedure sol(x,y:integer);
var i:integer;
begin
if (x=n) and (y=m) then c:=c+1(当前x,y坐标都为目标坐标,那么总路径c +1,c为统计的路径条数) else
begin//深搜,只有2个法则,向上y+1,向左x+1.并且判断有没有出界.
if (y
再问: 分别用的什么算法
再答: 第一个深搜 第二个枚举
 
 
展开全文阅读
剩余:2000