跳马与回溯.doc

跳马与回溯.doc

跳马与回溯 东风一中信息技术组 刘丽梅 中国象棋半张棋盘如下,马自左下角往右上角跳。今规定只许往右跳,不许往左跳,如图跳行线路。编程计算共有多少种跳行路线,并将所经路线打印出来。 打印格式: 0,0--1,2--2,4--4,3--5,1--6,3--8,4 马可能的跳步方向有四个,分别称方向1,方向2,方向3,方向4,用变量J来标注。 跳步方向 J 1 ,2 ,3 , 4 水平增量 DX(J) 1 ,2 ,2 , 1 垂直增量 DY(J) 2 ,1 ,-1 ,-2 定义数组X(10)用于记录马在棋盘中的水平方向上的位置,数组Y(10)记录垂直方向上的位置。数组A(10)记录在寻找马跳步方向时已查过的方向号,这样做是为了在回溯时避免重复查找。有关回溯的含意将在下面结合跳步举例加以说明。 令变量I来计马在棋盘上跳过的步数,同时也起堆栈指针的作用。 用变量X,Y来表示马在棋盘是要跳到的位置。在算第I步时,要以第I-1步的位置作为基点,考虑到跳步方向J不同,增量不同,可写出如下计算马跳后位置的公式: X=X(I-1)+DX(J) Y=Y(I-1)+DY(J) 按照这

文档评论(0)

1亿VIP精品文档

相关文档