逃离大厦第80关与马踏棋盘
来源:互联网 发布:古道社区网络黑市 编辑:程序博客网 时间:2024/04/29 18:35
今天我在玩一款逃离大厦的解密游戏。在跨越了重重障碍来到了第八十关。这一关很有意思
每次点击都会直接冲到底,要求填满所有空白的地方。
本来很容易,但是很不幸,一旦点击了就不能修改,楼主于是想到了马踏棋盘,终于可以学以致用了于是毫不犹豫
上代码
#include <stdio.h>#include <stdlib.h>#define N 5+2typedef struct {int a[N][N];int lstep[4];int rstep[4]; int cnt;}Horse;void Init(Horse *p){ int i,j; for(i=0;i<N;i++){ for(j=0;j<N;j++){ p->a[i][j]=-1; } } for(i=1;i<N-1;i++){ for(j=1;j<N-1;j++){ p->a[i][j]=0; } } p->cnt=0; p->a[1][1]=p->a[2][3]=p->a[3][5]=p->a[5][4]=-1; p->lstep[0]=p->rstep[3]=-1; p->lstep[1]=p->lstep[3]=p->rstep[0]=p->rstep[2]=0; p->lstep[2]=p->rstep[1]=1;}void prin(Horse *p){ int i,j; for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%3d",p->a[i][j]); } putchar('\n'); }}/* 一共有21个空 使用回溯思想 从(1,1)--(5,5); 每次转变方向必须冲到底 */void function(int R,int C,Horse *p){ int i;//控制方向 int save; for(i=0;i<4;i++){ if(p->a[R+p->lstep[i]][C+p->rstep[i]]==0){ //冲到底 save=p->cnt; while(p->a[R+p->lstep[i]][C+p->rstep[i]]==0){ R=R+p->lstep[i]; C=C+p->rstep[i]; p->a[R][C]=++(p->cnt); } if(p->cnt<21){ function(R,C,p); }else{ prin(p); } //按照原方向退到低 do{ p->a[R][C]=0; p->cnt--; R=R-p->lstep[i]; C=C-p->rstep[i]; }while(save!=p->cnt); } } }int main(void){ Horse p; Init(&p); prin(&p); int i,j; int time=0; for(i=1;i<N-1;i++){ for(j=1;j<N-1;j++){ function(i,j,&p); printf("time=%d\n",time++); } } return 0;}
最终经过代码运行终于通过了这一关。
附上楼主的马踏棋盘代码
http://blog.csdn.net/btnode/article/details/42664805
0 0
- 逃离大厦第80关与马踏棋盘
- “逃离大厦”游戏的破解
- 读《中国正在过大关(底层沦陷与上层逃离)》有感
- 大厦
- 马踏棋盘问题
- 马踏棋盘
- 马踏棋盘
- 马踏棋盘
- 【马踏棋盘】 数据结构
- 栈--马踏棋盘
- 马踏棋盘
- 求助-马踏棋盘
- 马踏棋盘算法
- 马踏棋盘
- 马踏棋盘问题
- 马踏棋盘
- 马踏棋盘
- 马踏棋盘
- KindEditor图片上传到七牛云
- 【USACO4.3.2】素数方阵 搜索搜索!
- first blood!
- POJ 2136 解题报告
- OpenGL的一些基本概念
- 逃离大厦第80关与马踏棋盘
- 服务俄国人后天
- 说过的话认同几
- 网页客户端存储的方式(一)------- localStorage 和 SessionStorage的区别和使用
- 我对“硬盘分区”的愚见
- Leetcode: Word Break
- 关于Visual Studio 中添加/引用代码后不被编译的问题
- 通用cocos lua scroll list view 框架进行中。。。
- 蚌埠市公安局启动再侦程序。2013年11月27日,武钦元被警方控制