#include<iostream>
#include<stack>
#define N 3
#define M 3
using namespace std;
struct STEP //保存座標點
{
int x;
int y;
};
struct Matrix
{
int maxtrix[N+2][M+2]; //迷宮
struct STEP entrance; //入口
struct STEP exit; //出口
};
struct Dir //方向
{
struct STEP right;
struct STEP down;
struct STEP left;
struct STEP up;
};
struct STEP dir[4]={{0,1},{1,0},{0,-1},{-1,0}};
Matrix mm = {{{1,1,1,1,1},{1,0,1,0,1},{1,0,0,1,1},{1,0,0,0,1},{1,1,1,1,1}},{1,1},{3,3}};
int main()
{
stack<struct STEP> path;
struct STEP cur = mm.entrance;
path.push(cur);
int i = 0;
for(int i=0;i<=4;i++)
{
for(int j=0;j<=4;j++)
cout<<mm.maxtrix[i][j]<<" ";
cout<<endl;
}
while(1)
{
cur.x = cur.x + dir[i%4].x;
cur.y = cur.y + dir[i%4].y;
path.push(cur);
if(mm.maxtrix[cur.x][cur.y] == 1)
{
path.pop();
cur = path.top();
++i;
continue;
}
else
{
i = 0;
if(cur.x == mm.exit.x && cur.y == mm.exit.y)
{
break;
}
}
}
while(!path.empty()) //逆向輸出路徑
{
struct STEP cur = path.top();
cout<<"("<< cur.x<<","<<cur.y<<")"<<endl;
path.pop();
}
return 0;
}
迷宮程序的實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.