poj3984. 5X5的迷宫

来源:互联网 发布:nginx域名转发 编辑:程序博客网 时间:2024/06/10 00:13
#include <iostream>#include <cstring>#include <queue>#include <fstream>#include <string>#include<stack>using namespace std;struct point{int y;int x;}buf;int direction[4][2]={{1,0},{0,1},{-1,0},{0,-1}};int re[5][5];int map[5][5];int vis[5][5];queue<point>q;stack<point>s;void bfs(){vis[buf.y][buf.x]=1;while(!q.empty()){for(int i=0;i<4;i++){buf.y=q.front().y+direction[i][1];buf.x=q.front().x+direction[i][0];if(0<=buf.x&&buf.x<5&&0<=buf.y&&buf.y<5&& !vis[buf.y][buf.x] &&map[buf.y][buf.x]==0){vis[buf.y][buf.x]=1;re[buf.x][buf.y]=i;q.push(buf);if(buf.x==4&&buf.y==4)break;}}q.pop();if(buf.x==4&&buf.y==4)break;}}int main(){    memset(vis,0,sizeof(vis));for(int i=0;i<5;i++)for(int j=0;j<5;j++)scanf("%d",&map[i][j]);buf.x=0;buf.y=0;q.push(buf);bfs();point nbuf={4,4};s.push(nbuf);while(buf.x!=0||buf.y!=0){nbuf.y=buf.y-direction[re[buf.x][buf.y]][1];nbuf.x=buf.x-direction[re[buf.x][buf.y]][0];s.push(nbuf);buf.y=nbuf.y;buf.x=nbuf.x;}while(!s.empty()){printf("(%d, %d)\n",s.top().y,s.top().x);s.pop();}return 0;}

0 0
原创粉丝点击