题目详情:
TZOJ6948走迷宫:
https://www.tzcoder.cn/acmhome/problemdetail.do?method=showdetail&id=6948
TZOJ2149 数据结构--迷宫问题二:
https://www.tzcoder.cn/acmhome/problemdetail.do?method=showdetail&id=2149
题目讲解视频:
【【c++】我花了两天时间,走了三个迷宫(手把手写代码)】https://www.bilibili.com/video/BV1Uj411T7K3?vd_source=2c6f0c5d33eca0d75d8c3ceb6375eb3e
视频中的源代码:
TZOJ6948 走迷宫
#include<bits/stdc++.h>
using namespace std;
char maze[10][10];
int vis[101][101]={0};
int nex[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int flag=0;
void dfs(int x,int y)
{
if(x==9&&y==9)
{
flag=1;
return;
}
for(int i=0;i<4;i++)
{
int tx=x+nex[i][0];
int ty=y+nex[i][1];
if(tx<1||tx>10||ty<1||ty>10)
{
continue;
}
if(maze[tx][ty]=='1'&&vis[tx][ty]==0)
{
vis[tx][ty]=1;
dfs(tx,ty);
}
}
}
int main()
{
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
cin>>maze[i][j];
}
dfs(2,2);
if(flag==1)
cout<<"successful!";
else
cout<<"fail!";
return 0;
}
TZOJ 2149 数据结构--迷宫问题
#include<bits/stdc++.h>
using namespace std;
int maze[5][5];
int vis[5][5]={0};
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
struct node
{
int x,y;
}pre[10][10];
void bfs()
{
queue<node> que;
node str;
str.x=str.y=0;
que.push(str);
vis[0][0]=1;
while(!que.empty())
{
node now=que.front();
que.pop();
if(now.x==4&&now.y==4)
{
return;
}
for(int i=0;i<4;i++)
{
node next;
next.x=now.x+dir[i][0];
next.y=now.y+dir[i][1];
if(next.x>=0&&next.x<5&&next.y>=0&&next.y<5&&!maze[next.x][next.y]&&!vis[next.x][next.y])
{
vis[next.x][next.y]=1;
que.push(next);
pre[next.x][next.y]=now;
}
}
}
}
void print(node a)
{
if(a.x==0&&a.y==0)
{
printf("(0, 0)\n");
return;
}
print(pre[a.x][a.y]);
printf("(%d, %d)\n",a.x,a.y);
}
int main()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
cin>>maze[i][j];
}
bfs();
node end;
end.x=end.y=4;
print(end);
return 0;
}
未完待续
欢迎私信、评论区交流!