C语言求解华容道游戏最少步数及移动过程
华容道游戏简要描述
在一个5行4列的方格区域中,摆放曹操(2*2),五虎将(1*2或2*1),蜀兵(1*1)共占18个方格,其中剩余2个方格用于移动板块,玩家需要通过移动其中板块将曹操移动到出口,并且最好用最少步数。
游戏截图展示
这是我用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 0void 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];初始化bsSolution *s;初始化sQueue *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语言求解华容道游戏最少步数及移动过程相关推荐
- C语言实现华容道游戏(附完整源码)
C语言实现华容道游戏 #include <iostream> #include <cmath> #include <graphics.h> #include &qu ...
- C语言自制华容道游戏代码
程序简介 华容道,画风参考的是手机程序:超级华容道.玩法是将大块移动至下层的中间.随机盘面,难度适中,自动解题. 程序随机了横块纵块数量,所以会有无解或难解,生成函数保证了加载出来的盘面是可玩的,但不 ...
- c语言填数字游戏求解过程解读,c语言编程--数字游戏.doc
c语言编程--数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...
- c语言迷宫求解毕业设计,毕业设计(论文)-基于Windows平台C语言实现迷宫游戏的设计.doc...
基于Windows平台C语言实现迷宫游戏的设计 摘 要 随着科技的日益发展,计算机信息知识越来越被人们所认知和使用,在当今知识爆炸的时代计算机毫无疑问成为人们常用的日常工具,而Windows和C语言都 ...
- 华容道3x3的技巧_华容道游戏秘决技巧
玩法:就是通过这两个小空格移动棋子,曹操移出华容道(也就是把最大的那个滑块移到最下方中央位置).滑块游戏华容道,又名捉放曹,古老的中国游戏,以其变化多端.百玩不厌的特点与魔方.独立钻石棋一起被国外智力 ...
- 华容道游戏c#最简破解
华容道游戏的暴力破解是少年时候的梦想,那时候刚学电脑basic,也刚知道华容道这个游戏,就想拿电脑去破解这个游戏.很可惜那时候太年轻,basic也太弱,没有能成功. 前几天做网页爬虫,用到广度搜索,突 ...
- 华容道游戏开发--android小组
这个是我们小组的同学做的一个游戏,游戏界面做的比较简单一点,但是还是麻雀虽小五脏俱全滴... 1,游戏背景 华容道是古老的中国游戏,以其变化多端.百玩不厌的特点与七巧板.九连环合称"中国的难 ...
- C语言学习 数独游戏
摘要:花了1周多时间学习了C语言,开始练手写解数独游戏的程序. C语言学习 数独游戏 作者:乌龙哈里 时间:2015-11-22 平台:Window7 64bit,TCC 0.9.26(x86-64 ...
- c语言五子棋学年论文,基于c语言五子棋小游戏生本科论文.doc
基于c语言五子棋小游戏生本科论文 五子棋小游戏 需求分析 现在有越来越多的人使用电脑,而且五子棋的受众广泛但实体棋操作较为繁琐且平时较难实现,所以电脑版的五子棋游戏应运而生.大家对于这个小游戏的需求如 ...
最新文章
- MNIST 训练测试
- 微软制作工具_大白菜U盘启动盘制作
- python代码用c语言封装_树莓派开发ADC芯片CS1237(C语言和python库开发)
- AsSystemRum 系统提权工具 实现思路及其源码
- Spring面向方面的编程
- 算法之最长公共子序列(LCS)问题
- Hadoop 的核心(2)—— MapReduce YARN
- 开课吧Java课堂:如何创建多线程
- 《高效对话》— 综合素质提升书籍
- 进阶篇第九期:相册与拍照的后处理
- maya_Arnold_Aov分层渲染插件 v1.1.0 更新下载及视频教程
- 裸金属服务器开通原理
- Microsoft Teams通话质量仪表盘(CQD)怎么玩?
- JDK8 到 JDK17 各个版本的重要特性一览
- 笔记本电脑显示以太网未连接_如何向笔记本电脑添加以太网连接
- win10 设置滑动关机以及修改图片为ico格式
- 在iview中render函数使用Switch功能
- 旅行家的预算(贪心)
- AT89S51/52单片机详细英文缩写解释汇总
- 基于蛇优化算法的函数寻优算法
热门文章
- unityt光线透射目标
- 图像的特征提取都有哪些算法
- 厉害,63岁程序员,退休之后开发一款神奇应用,仅上线22天获56800次下载量!...
- 软件工程师也要懂的硬件知识(二极管、三极管、MOS管)
- 设置电脑在多久后自动关机
- 服务器磁盘管理(分区和挂载)
- python自学课堂_3D图示Python标准自学教程入门篇
- 56岁潘石屹生日当天宣布要学编程语言Python,网友:地产商来抢码农饭碗了!...
- CEVA-X16自由式编程-4-JTAG探索
- t3 服务器文件,用友T3软件数据库文件存放的位置