博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
马的遍历
阅读量:4980 次
发布时间:2019-06-12

本文共 2760 字,大约阅读时间需要 9 分钟。

中国象棋半张棋盘如图1(a)所示。马自左下角往右上角跳。今规定只许往右跳,不许往左跳。比如图4(a)中所示为一种跳行路线,并将所经路线打印出来。打印格式为:

0,0->2,1->3,3->1,4->3,5->2,7->4,8…

 

【算法分析】

如图4(b),马最多有四个方向,若原来的横坐标为j、纵坐标为i,则四个方向的移动可表示为:
1: (i,j)→(i+2,j+1); (i<3,j<8)
2: (i,j)→(i+1,j+2); (i<4,j<7)
3: (i,j)→(i-1,j+2); (i>0,j<7)
4: (i,j)→(i-2,j+1); (i>1,j<8)
搜索策略:
S1:A[1]:=(0,0);
S2:从A[1]出发,按移动规则依次选定某个方向,如果达到的是(4,8)则转向S3,否则继续搜索下
一个到达的顶点;
S3:打印路径。
【算法设计】
program exam2;

const  x:array[1..4,1..2] of integer=((2,1),(1,2),(-1,2),(-2,1)); {四种移动规则}

var  t:integer; {路径总数}

a:array[1..9,1..2] of integer;   {路径}

procedure print(ii:integer);  {打印}

var   i:integer;

begin

  inc(t);                  {路径总数}

  for i:=1 to ii-1 do

     write(a[i,1],',',a[i,2],'-->');

  writeln('4,8',t:5);

  readln;

end;

procedure try(i:integer);  {搜索}

var  j:integer;

begin

  for j:=1 to 4 do

    if (a[i-1,1]+x[j,1]>=0) and (a[i-1,1]+x[j,1]<=4) and

       (a[i-1,2]+x[j,2]>=0) and (a[i-1,2]+x[j,2]<=8) then

       begin

         a[i,1]:=a[i-1,1]+x[j,1];

         a[i,2]:=a[i-1,2]+x[j,2];

         if (a[i,1]=4) and (a[i,2]=8) then

            print(i)

         else try(i+1);  {搜索下一步}

         a[i,1]:=0;a[i,2]:=0

       end;

end;

BEGIN  {主程序}

  try(2);

END.

 

0,0-->2,1-->4,2-->3,4-->4,6-->2,7-->4,8    1

0,0-->2,1-->4,2-->3,4-->1,5-->3,6-->4,8    2

0,0-->2,1-->4,2-->3,4-->1,5-->2,7-->4,8    3

0,0-->2,1-->4,2-->2,3-->4,4-->3,6-->4,8    4

0,0-->2,1-->4,2-->2,3-->4,4-->2,5-->4,6-->2,7-->4,8    5

0,0-->2,1-->4,2-->2,3-->4,4-->2,5-->0,6-->2,7-->4,8    6

0,0-->2,1-->4,2-->2,3-->3,5-->2,7-->4,8    7

0,0-->2,1-->4,2-->2,3-->1,5-->3,6-->4,8    8

0,0-->2,1-->4,2-->2,3-->1,5-->2,7-->4,8    9

0,0-->2,1-->4,2-->2,3-->0,4-->2,5-->4,6-->2,7-->4,8   10

0,0-->2,1-->4,2-->2,3-->0,4-->2,5-->0,6-->2,7-->4,8   11

0,0-->2,1-->3,3-->2,5-->4,6-->2,7-->4,8   12

0,0-->2,1-->3,3-->2,5-->0,6-->2,7-->4,8   13

0,0-->2,1-->3,3-->1,4-->3,5-->2,7-->4,8   14

0,0-->2,1-->3,3-->1,4-->0,6-->2,7-->4,8   15

0,0-->2,1-->1,3-->3,4-->4,6-->2,7-->4,8   16

0,0-->2,1-->1,3-->3,4-->1,5-->3,6-->4,8   17

0,0-->2,1-->1,3-->3,4-->1,5-->2,7-->4,8   18

0,0-->2,1-->1,3-->2,5-->4,6-->2,7-->4,8   19

0,0-->2,1-->1,3-->2,5-->0,6-->2,7-->4,8   20

0,0-->2,1-->0,2-->2,3-->4,4-->3,6-->4,8   21

0,0-->2,1-->0,2-->2,3-->4,4-->2,5-->4,6-->2,7-->4,8   22

0,0-->2,1-->0,2-->2,3-->4,4-->2,5-->0,6-->2,7-->4,8   23

0,0-->2,1-->0,2-->2,3-->3,5-->2,7-->4,8   24

0,0-->2,1-->0,2-->2,3-->1,5-->3,6-->4,8   25

0,0-->2,1-->0,2-->2,3-->1,5-->2,7-->4,8   26

0,0-->2,1-->0,2-->2,3-->0,4-->2,5-->4,6-->2,7-->4,8   27

0,0-->2,1-->0,2-->2,3-->0,4-->2,5-->0,6-->2,7-->4,8   28

0,0-->2,1-->0,2-->1,4-->3,5-->2,7-->4,8   29

0,0-->2,1-->0,2-->1,4-->0,6-->2,7-->4,8   30

0,0-->1,2-->3,3-->2,5-->4,6-->2,7-->4,8   31

0,0-->1,2-->3,3-->2,5-->0,6-->2,7-->4,8   32

0,0-->1,2-->3,3-->1,4-->3,5-->2,7-->4,8   33

0,0-->1,2-->3,3-->1,4-->0,6-->2,7-->4,8   34

0,0-->1,2-->2,4-->3,6-->4,8   35

0,0-->1,2-->0,4-->2,5-->4,6-->2,7-->4,8   36

0,0-->1,2-->0,4-->2,5-->0,6-->2,7-->4,8   37

 

转载于:https://www.cnblogs.com/qilinart/articles/4988512.html

你可能感兴趣的文章
Django - Xadmin 组件(一)
查看>>
LeetCode OJ 之 Number of Digit One (数字1的个数)
查看>>
也谈如何获取真实正确的 Windows 系统版本号
查看>>
git基本操作
查看>>
Web for Pentester -- Directory traversal
查看>>
1.jdk安装和环境配置
查看>>
用caffe训练openpose过程中,出现异常
查看>>
POJ-2503 Babelfish Hash表
查看>>
java连接ibm mq
查看>>
oracle常用的符号用法
查看>>
理解爬虫原理
查看>>
bootstrap - 按钮,下拉菜单
查看>>
c++实验4
查看>>
C#中调用API函数RegisterHotKey注册多个系统热键
查看>>
【慢慢学Android】:5.短信拦截
查看>>
no.1
查看>>
第八章
查看>>
小米网抢购系统开发实践和我的个人观察
查看>>
2014年工作中遇到的10个问题:221-230
查看>>
提高生产力:发送邮件API和Web服务(包含源码)
查看>>