Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
138254 baim. 迷宫问题 C++ 编译错误 0 0 MS 0 KB 1297 2024-03-14 20:03:43

Tests(0/0):


#include<iostream> #include<cstring> using namespace std; #define N 25 int map[N][N]; bool visited[N][N]; int flag; int next[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}; struct point { int x,y; int pre; //本路径中上一块在队列中的下标 }; point Q[N]; void output(int z) { int k=z; while(k!=0) { printf("(%d,%d)<--",Q[k].x,Q[k].y); k=Q[k].pre; } printf("(1,1)<--"); } void bfs(int m,int n) { int i; int front=-1,rear=-1; memset(visited,0,sizeof(visited)); rear++; Q[rear].x=1; Q[rear].y=1; Q[rear].pre=-1; visited[1][1]=1; while(front<=rear&&!flag) { front++; point temp=Q[front]; if(Q[front].x==m&&Q[front].y==n) { flag=1; output(front); return ; } for(i=0;i<7;i++) { int x=temp.x+next[i][0]; int y=temp.y+next[i][1]; if(map[x][y]==0&&!visited[x][y]) { visited[x][y]=1; if(x>=1&&x<=m&&y>=1&&y<=n) { rear++; Q[rear].x=x; Q[rear].y=y; Q[rear].pre=front; } } } } } int main() { int i,j; int m,n; while(cin>>m>>n) { for(i=1;i<=m;i++) for(j=1;j<=n;j++) cin>>map[i][j]; flag=0; bfs(m,n); } return 0; }


测评信息: