C语言求解华容道游戏最少步数及移动过程

华容道游戏简要描述

在一个5行4列的方格区域中,摆放曹操(2*2),五虎将(1*2或2*1),蜀兵(1*1)共占18个方格,其中剩余2个方格用于移动板块,玩家需要通过移动其中板块将曹操移动到出口,并且最好用最少步数。

游戏截图展示

C语言求解华容道游戏最少步数及移动过程_第1张图片
这是我用html+css+js编写的简单华容道游戏,其中的求解就是用C语言实现的,游戏资源我已经上传到CSDN上。

解决思路

还是老方法,5行4列的二维数组存储当前的局面,不过跟以前博文所写稍有不同,请耐心往下看。
板块的能否移动有个共性,那就是它移动到的目的地必须有足够的空处,整个游戏局面中就10个板块,每个都有高度,宽度,和所在的位置,这样我们可以抽象出所有板块类型Block,其定义如下

	//板块结构
	typedef struct block
	{
		int x,y;	//板块所在位置(0,0)表示第一行第一列
		int w,h;	//width宽度,height高度,值非1即2
	}Block;			//别名

那么整个游戏我们可以用板块数组来刻画,

	Block bs[10];	//板块数组

每次某个板块移动,就对该板块的坐标进行运算,当曹操板块(也就是w=2&&h==2的板块的坐标是(3,1)时,曹操板块就在出口处了,表示游戏得到了一个解决方案,此时退出程序并打印移动方案。)

实现自动求解我们需要让每个板块自行移动,让每个板块移动很简单,只需要一个循环语句便可实现,但是它要怎么移动,能不能移动,这需要进行一次判断才行。对于曹操板块,它只能有上下左右四种移动方式,我们判断其能否往某个方向移动,需要知道曹操板块的坐标和此时的局面(也就是它将要移动的地方是不是空出来的)。这需要二维数组map[5][4]来对局面进行描述。关于局面我们可以由板块数组得到,代码如下:

	//板块分四种,正方形大块,正方形小块,长方形横放,长方形竖放
	#define DA 1
	#define XIAO 2
	#define HENG 3
	#define SHU 4
	#define KONG 0
	void getMap(Block bs[],int map[][4])
	{
		int i,j;
		for(i=0;i<5;i++)
		{
			for(j=0;j<4;j++)
			{
				map[i][j]=KONG;
			}
		}
		for(i=0;i<10;i++)
		{
			//大正方形
			if(bs[i].w==2&&bs[i].h==2)
			{
				map[i][j]=DA;map[i][j+1]=DA;map[i+1][j]=DA;map[i+1][j+1]=DA;
			}
			//横长方形
			else if(bs[i].w==2)
			{
				map[i][j]=HENG;map[i][j+1]=HENG;
			}
			//竖长方形
			else if(bs[i].h==2)
			{
				map[i][j]=SHU;map[i+1][j]=SHU;
			}
			//小正方形
			else
			{
				map[i][j]=XIAO;
			}
		}
	}

得到局面后,我们便可以对板块能否向某方向移动进行判断,举个例子

	#define UP 1
	#define DOWN 2
	#define LEFT 3
	#define RIGHT 4
	#define UPUP 5
	//省略其他方向宏定义,只说明算法
	int canTurnToDirect(Block b,int direct,int map[][4])
	{
		//方向分类
		switch(direct)
		{
			//能否上移
			case UP:
				//已经在局面最上端,再移动就出去了
				if(b.x==0)
				{
					return 0;
				}
				//先根据长度和高度判断类型
				if(b.w==1)
				{
					//需要上面一格是空白处
					return map[b.x-1][b.y]==KONG;
				}
				else
				{
					//需要上面两格是空白处
					return map[b.x-1][b.y]==KONG&&map[b.x-1][b.y+1]==KONG;
				}
				break;
			//省略
		}
	}

现在我们可以判断是否能朝某方向移动了,那么刻画一下其移动

	//由于需要改变值,所以传递指针做参数
	void turnToDirect(Block *b,int direct)
	{
		switch(direct)
		{
			case UP:
				b->x--;
				break;
			//省略
		}
	}

判断后根据可行方向移动,每次移动后(精确地说是大正方形移动后)都有可能得到了解法,那么我们需要进行一次判断,用板块数组判断或者用局面数组判断都可以,这里介绍局面数组判断

	int isOver(int map[][4])
	{
		//当可以确定大正方形在出口前时为真
		return map[3][1]==DA&&map[4][2]==DA;
	}

现在可以得到一个基本求解框架了

	1.声明板块数组
	2.根据板块数组得到一个局面
	3.遍历板块数组,每个板块在该局面下能否朝某方向移动,
	  if(可以)
	  {
			移动该板块
			获取一个新局面
			对新局面进行判断,曹操是否已经走到出口
			if(走到出口)
			{
				打印移动步骤
				退出程序
			}
			将该板块移动回原位,方便进行下一个移动方向判断
			该新局面是否已经在前面某方块移动后产生过
			if(未产生过)
			{
				保存起来,用于给后来的新局面去重
			}
	  }

这里强调一下的就是去重,因为根据板块移动的重复性不做要求时,有时候可能移来移去都是一个板块,导致最后程序运行内存耗尽而崩溃!(以上面给出的横刀立马布局为例,不去重时可能四兵无限的左右移动,这就让计算机很难受了)
那么我们怎么去重和保存出现过的局面呢?这里就需要有一定的数据结构基础,需要对单链表和队列有一定的认识(这个就不在这里多做赘述,请自行补习)。我们设计一个方案结构,代码如下

	//方案结构
	typedef struct solution
	{
		int map[5][4];			//局面
		struct solution *pre;	//上一个方案
		struct solution *next;	//下一个方案
	}Solution;					//别名

每次移动后,将该新局面保存到方案的局面属性中,再将该方案加入队列,自定义队列结构如下

	//队列结构
	typedef struct queue
	{
		struct solution *first;	//首方案
		struct solution *last;	//末方案
	}Queue;

加入前需要对队列中是否存在该方案同局面进行查重判断,不存在时就添加到队列末端。重复则将其忽略,并将前面申请的空间释放掉,不然可能运行内存不足。

现在我们的算法可以说比较完善了。

	Block bs[10];
	初始化bs
	Solution *s;
	初始化s
	Queue *q;
	初始化q

	从bs获取初始局面赋给s的局面数组
	s进入q队列中

	//now为初始方案,后面为当前方案
	Solution *now=q->first;
	while(now!=NULL)
	{
		从now中获取bs(这里的代码上面没有讲,读者自行思考从板块到局面的逆过程)
		for(i=0;i<10;i++)
		{
			板块i能否向下移
			if(可以下移)
			{
				同上,不多做赘述
			}
		}
		//下一个方案
		now=now->next;
	}
	所有可能出现的移动局面都遍历完成后仍然不能得到解答,说明该关卡无解。
	打印结论
	结束程序

具体代码我已上传到CSDN。由于没有使用哈希算法(本人不会),所以运行时间较长,大概一到两分钟左右。

横刀立马布局的运行结果

读取关卡开始
关卡:横刀立马一
++============++
++ 曹操 (1,2) ++
++ 横将 (3,2) ++
++ 竖将 (1,1) ++
++ 竖将 (3,1) ++
++ 竖将 (3,4) ++
++ 竖将 (1,4) ++
++ 蜀兵 (4,2) ++
++ 蜀兵 (4,3) ++
++ 蜀兵 (5,1) ++
++ 蜀兵 (5,4) ++
++============++
读取关卡结束

初始局面
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖横横竖=====*
*=====竖兵兵竖=====*
*=====兵    兵=====*
********************

开始搜索解决方案,由于使用基本算法可能需要2到3分钟运行时间,请耐心等候!

推荐方案开始
********************
*      第1  步     *
*   (4,2)--->> 下  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖横横竖=====*
*=====竖兵兵竖=====*
*=====兵    兵=====*
********************

********************
*      第2  步     *
*   (5,4)--->> 左  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖横横竖=====*
*=====竖  兵竖=====*
*=====兵兵  兵=====*
********************

********************
*      第3  步     *
*   (3,4)--->> 下  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖横横竖=====*
*=====竖  兵竖=====*
*=====兵兵兵  =====*
********************

********************
*      第4  步     *
*   (3,2)--->> 右  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖横横  =====*
*=====竖  兵竖=====*
*=====兵兵兵竖=====*
********************

********************
*      第5  步     *
*   (3,1)--->> 右  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖  横横=====*
*=====竖  兵竖=====*
*=====兵兵兵竖=====*
********************

********************
*      第6  步     *
*   (5,1)--->> 上  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====  竖横横=====*
*=====  竖兵竖=====*
*=====兵兵兵竖=====*
********************

********************
*      第7  步     *
*   (5,2)--->> 左  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====  竖横横=====*
*=====兵竖兵竖=====*
*=====  兵兵竖=====*
********************

********************
*      第8  步     *
*   (3,2)--->> 下  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====  竖横横=====*
*=====兵竖兵竖=====*
*=====兵  兵竖=====*
********************

********************
*      第9  步     *
*   (3,3)--->>左左 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====    横横=====*
*=====兵竖兵竖=====*
*=====兵竖兵竖=====*
********************

********************
*      第10 步     *
*   (4,3)--->>上右 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====横横    =====*
*=====兵竖兵竖=====*
*=====兵竖兵竖=====*
********************

********************
*      第11 步     *
*   (5,3)--->>上上 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====横横  兵=====*
*=====兵竖  竖=====*
*=====兵竖兵竖=====*
********************

********************
*      第12 步     *
*   (4,2)--->> 右  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====横横兵兵=====*
*=====兵竖  竖=====*
*=====兵竖  竖=====*
********************

********************
*      第13 步     *
*   (4,1)--->>下右 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====横横兵兵=====*
*=====兵  竖竖=====*
*=====兵  竖竖=====*
********************

********************
*      第14 步     *
*   (3,1)--->> 下  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====横横兵兵=====*
*=====    竖竖=====*
*=====兵兵竖竖=====*
********************

********************
*      第15 步     *
*   (3,3)--->>左左 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====    兵兵=====*
*=====横横竖竖=====*
*=====兵兵竖竖=====*
********************

********************
*      第16 步     *
*   (3,4)--->>左左 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵    兵=====*
*=====横横竖竖=====*
*=====兵兵竖竖=====*
********************

********************
*      第17 步     *
*   (4,3)--->> 上  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵    =====*
*=====横横竖竖=====*
*=====兵兵竖竖=====*
********************

********************
*      第18 步     *
*   (4,4)--->> 上  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵竖  =====*
*=====横横竖竖=====*
*=====兵兵  竖=====*
********************

********************
*      第19 步     *
*   (5,2)--->>右右 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵竖竖=====*
*=====横横竖竖=====*
*=====兵兵    =====*
********************

********************
*      第20 步     *
*   (5,1)--->>右右 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵竖竖=====*
*=====横横竖竖=====*
*=====兵    兵=====*
********************

********************
*      第21 步     *
*   (4,1)--->> 下  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵竖竖=====*
*=====横横竖竖=====*
*=====    兵兵=====*
********************

********************
*      第22 步     *
*   (3,2)--->>下左 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵竖竖=====*
*=====    竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第23 步     *
*   (3,3)--->> 左  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵  竖竖=====*
*=====兵  竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第24 步     *
*   (3,4)--->> 左  *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵竖  竖=====*
*=====兵竖  竖=====*
*=====横横兵兵=====*
********************

********************
*      第25 步     *
*   (1,4)--->>下下 *
********************
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵竖竖  =====*
*=====兵竖竖  =====*
*=====横横兵兵=====*
********************

********************
*      第26 步     *
*   (1,2)--->> 右  *
********************
*=====竖曹曹  =====*
*=====竖曹曹  =====*
*=====兵竖竖竖=====*
*=====兵竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第27 步     *
*   (1,1)--->> 右  *
********************
*=====竖  曹曹=====*
*=====竖  曹曹=====*
*=====兵竖竖竖=====*
*=====兵竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第28 步     *
*   (3,1)--->>上上 *
********************
*=====  竖曹曹=====*
*=====  竖曹曹=====*
*=====兵竖竖竖=====*
*=====兵竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第29 步     *
*   (4,1)--->>上上 *
********************
*=====兵竖曹曹=====*
*=====  竖曹曹=====*
*=====  竖竖竖=====*
*=====兵竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第30 步     *
*   (3,2)--->> 左  *
********************
*=====兵竖曹曹=====*
*=====兵竖曹曹=====*
*=====  竖竖竖=====*
*=====  竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第31 步     *
*   (1,2)--->>下下 *
********************
*=====兵竖曹曹=====*
*=====兵竖曹曹=====*
*=====竖  竖竖=====*
*=====竖  竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第32 步     *
*   (1,3)--->> 左  *
********************
*=====兵  曹曹=====*
*=====兵  曹曹=====*
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第33 步     *
*   (3,4)--->>上上 *
********************
*=====兵曹曹  =====*
*=====兵曹曹  =====*
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====横横兵兵=====*
********************

********************
*      第34 步     *
*   (3,3)--->> 右  *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖竖  =====*
*=====竖竖竖  =====*
*=====横横兵兵=====*
********************

********************
*      第35 步     *
*   (5,3)--->>上上 *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖  竖=====*
*=====竖竖  竖=====*
*=====横横兵兵=====*
********************

********************
*      第36 步     *
*   (5,4)--->>上左 *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖  竖=====*
*=====横横  兵=====*
********************

********************
*      第37 步     *
*   (5,1)--->>右右 *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖兵竖=====*
*=====横横    =====*
********************

********************
*      第38 步     *
*   (3,1)--->> 下  *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖兵竖=====*
*=====    横横=====*
********************

********************
*      第39 步     *
*   (3,2)--->> 下  *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====  竖兵竖=====*
*=====竖竖兵竖=====*
*=====竖  横横=====*
********************

********************
*      第40 步     *
*   (3,3)--->>左左 *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====    兵竖=====*
*=====竖竖兵竖=====*
*=====竖竖横横=====*
********************

********************
*      第41 步     *
*   (1,2)--->> 下  *
********************
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====兵    竖=====*
*=====竖竖兵竖=====*
*=====竖竖横横=====*
********************

********************
*      第42 步     *
*   (1,1)--->>右右 *
********************
*=====兵    竖=====*
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖横横=====*
********************

********************
*      第43 步     *
*   (2,1)--->>上右 *
********************
*=====    兵竖=====*
*=====兵曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖横横=====*
********************

********************
*      第44 步     *
*   (3,1)--->>上上 *
********************
*=====  兵兵竖=====*
*=====  曹曹竖=====*
*=====兵曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖横横=====*
********************

********************
*      第45 步     *
*   (4,1)--->>上上 *
********************
*=====兵兵兵竖=====*
*=====  曹曹竖=====*
*=====  曹曹竖=====*
*=====竖竖兵竖=====*
*=====竖竖横横=====*
********************

********************
*      第46 步     *
*   (4,2)--->> 左  *
********************
*=====兵兵兵竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====  竖兵竖=====*
*=====  竖横横=====*
********************

********************
*      第47 步     *
*   (4,3)--->>下左 *
********************
*=====兵兵兵竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖  兵竖=====*
*=====竖  横横=====*
********************

********************
*      第48 步     *
*   (2,2)--->> 下  *
********************
*=====兵兵兵竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖    竖=====*
*=====竖兵横横=====*
********************

********************
*      第49 步     *
*   (1,3)--->>下左 *
********************
*=====兵兵兵竖=====*
*=====竖    竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖兵横横=====*
********************

********************
*      第50 步     *
*   (1,4)--->> 左  *
********************
*=====兵兵  竖=====*
*=====竖兵  竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖兵横横=====*
********************

********************
*      第51 步     *
*   (3,4)--->>上上 *
********************
*=====兵兵竖  =====*
*=====竖兵竖  =====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====竖兵横横=====*
********************

********************
*      第52 步     *
*   (3,2)--->> 右  *
********************
*=====兵兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖曹曹  =====*
*=====竖曹曹  =====*
*=====竖兵横横=====*
********************

********************
*      第53 步     *
*   (2,2)--->> 下  *
********************
*=====兵兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖  曹曹=====*
*=====竖  曹曹=====*
*=====竖兵横横=====*
********************

********************
*      第54 步     *
*   (1,2)--->> 下  *
********************
*=====兵兵竖竖=====*
*=====竖  竖竖=====*
*=====竖兵曹曹=====*
*=====竖  曹曹=====*
*=====竖兵横横=====*
********************

********************
*      第55 步     *
*   (1,1)--->> 右  *
********************
*=====兵  竖竖=====*
*=====竖兵竖竖=====*
*=====竖兵曹曹=====*
*=====竖  曹曹=====*
*=====竖兵横横=====*
********************

********************
*      第56 步     *
*   (2,1)--->> 上  *
********************
*=====  兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖兵曹曹=====*
*=====竖  曹曹=====*
*=====竖兵横横=====*
********************

********************
*      第57 步     *
*   (4,1)--->> 上  *
********************
*=====竖兵竖竖=====*
*=====竖兵竖竖=====*
*=====  兵曹曹=====*
*=====竖  曹曹=====*
*=====竖兵横横=====*
********************

********************
*      第58 步     *
*   (5,2)--->> 左  *
********************
*=====竖兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖兵曹曹=====*
*=====竖  曹曹=====*
*=====  兵横横=====*
********************

********************
*      第59 步     *
*   (3,2)--->>下下 *
********************
*=====竖兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖兵曹曹=====*
*=====竖  曹曹=====*
*=====兵  横横=====*
********************

********************
*      第60 步     *
*   (3,3)--->> 左  *
********************
*=====竖兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖  曹曹=====*
*=====竖  曹曹=====*
*=====兵兵横横=====*
********************

********************
*      第61 步     *
*   (1,4)--->>下下 *
********************
*=====竖兵竖竖=====*
*=====竖兵竖竖=====*
*=====竖曹曹  =====*
*=====竖曹曹  =====*
*=====兵兵横横=====*
********************

********************
*      第62 步     *
*   (1,3)--->> 右  *
********************
*=====竖兵竖  =====*
*=====竖兵竖  =====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵横横=====*
********************

********************
*      第63 步     *
*   (1,2)--->> 右  *
********************
*=====竖兵  竖=====*
*=====竖兵  竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵横横=====*
********************

********************
*      第64 步     *
*   (2,2)--->> 右  *
********************
*=====竖  兵竖=====*
*=====竖兵  竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵横横=====*
********************

********************
*      第65 步     *
*   (1,1)--->> 右  *
********************
*=====竖  兵竖=====*
*=====竖  兵竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵横横=====*
********************

********************
*      第66 步     *
*   (3,1)--->>上上 *
********************
*=====  竖兵竖=====*
*=====  竖兵竖=====*
*=====竖曹曹竖=====*
*=====竖曹曹竖=====*
*=====兵兵横横=====*
********************

********************
*      第67 步     *
*   (3,2)--->> 左  *
********************
*=====竖竖兵竖=====*
*=====竖竖兵竖=====*
*=====  曹曹竖=====*
*=====  曹曹竖=====*
*=====兵兵横横=====*
********************

********************
*      第68 步     *
*   (2,3)--->>下下 *
********************
*=====竖竖兵竖=====*
*=====竖竖兵竖=====*
*=====曹曹  竖=====*
*=====曹曹  竖=====*
*=====兵兵横横=====*
********************

********************
*      第69 步     *
*   (1,3)--->>下下 *
********************
*=====竖竖兵竖=====*
*=====竖竖  竖=====*
*=====曹曹  竖=====*
*=====曹曹兵竖=====*
*=====兵兵横横=====*
********************

********************
*      第70 步     *
*   (1,4)--->> 左  *
********************
*=====竖竖  竖=====*
*=====竖竖  竖=====*
*=====曹曹兵竖=====*
*=====曹曹兵竖=====*
*=====兵兵横横=====*
********************

********************
*      第71 步     *
*   (3,4)--->>上上 *
********************
*=====竖竖竖  =====*
*=====竖竖竖  =====*
*=====曹曹兵竖=====*
*=====曹曹兵竖=====*
*=====兵兵横横=====*
********************

********************
*      第72 步     *
*   (4,3)--->>上右 *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====曹曹兵  =====*
*=====曹曹兵  =====*
*=====兵兵横横=====*
********************

********************
*      第73 步     *
*   (5,3)--->> 上  *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====曹曹兵兵=====*
*=====曹曹    =====*
*=====兵兵横横=====*
********************

********************
*      第74 步     *
*   (5,2)--->>右右 *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====曹曹兵兵=====*
*=====曹曹横横=====*
*=====兵兵    =====*
********************

********************
*      第75 步     *
*   (5,1)--->>右右 *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====曹曹兵兵=====*
*=====曹曹横横=====*
*=====兵    兵=====*
********************

********************
*      第76 步     *
*   (3,1)--->> 下  *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====曹曹兵兵=====*
*=====曹曹横横=====*
*=====    兵兵=====*
********************

********************
*      第77 步     *
*   (3,3)--->>左左 *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====    兵兵=====*
*=====曹曹横横=====*
*=====曹曹兵兵=====*
********************

********************
*      第78 步     *
*   (3,4)--->>左左 *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====兵    兵=====*
*=====曹曹横横=====*
*=====曹曹兵兵=====*
********************

********************
*      第79 步     *
*   (4,3)--->> 上  *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====兵兵    =====*
*=====曹曹横横=====*
*=====曹曹兵兵=====*
********************

********************
*      第80 步     *
*   (5,3)--->>上右 *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====兵兵横横=====*
*=====曹曹    =====*
*=====曹曹兵兵=====*
********************

********************
*      第81 步     *
*   (4,1)--->> 右  *
********************
*=====竖竖竖竖=====*
*=====竖竖竖竖=====*
*=====兵兵横横=====*
*=====曹曹  兵=====*
*=====曹曹  兵=====*
********************

推荐方案结束
程序用时35.150000s

你可能感兴趣的:(C语言控制台游戏入门,算法)