《走迷宫游戏》 问题描述 :以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。

设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
基本要求
1.首先用二维数组存储迷宫数据,迷宫数据由用户输入。
2.一个以链表作存储结构的栈类型,然后编写一个求解迷宫的递归或非递归程序。求得的通路以三元组(i,j,d)形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向(东、南、西、北四个方向所用代表数字,自行定义)。
3.可以用多种方法实现,但至少用两种方法,用三种以上可加分。
顺便描述下代码的意思。
用c++做!!!

第1个回答  2014-01-21
#include<cstdio>#include<cstring>using namespace std;int dx[]={-1,0,1,0};int dy[]={0,1,0,-1};int a[1000][1000];int m,n;void init(){ freopen("maze.in", "r", stdin); freopen("maze.out", "w", stdout);}void readdata(){ scanf("%d%d", &m, &n); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { scanf("%d", &a[i][j]); } }}void dfs(int x, int y){ if(x==m-1&&y==n-1) { for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { printf("%d ", a[i][j]); } printf("\n"); } printf("\n"); } for(int i=0;i<4;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(nx>=0&&nx<m&&ny>=0&&ny<n&&a[nx][ny]==0) { a[nx][ny]=8; dfs(nx,ny); a[nx][ny]=0; } }}
void work(){ a[0][0]=8; dfs(0,0);}
int main(){ init(); readdata(); work(); return 0;}
相似回答