#include<bits/stdc++.h>
using namespace std;
int n;
char a[30][30];
int r[410][3];// 记录正确的第一条路径
int fx[4]={0,-1,0,1};// 注意规定的左上右下的顺序
int fy[4]={-1,0,1,0};
void dfs(int x,int y,int k)
{
r[k][1]=x;//用来存正确的坐标
r[k][2]=y;// 记录到经过的点k的位置坐标(r[k][1],r[k][2])
a[x][y]='1'; //规定(1,1)是入口
//如果到达终点(n,n)那么就可以输出了
//输出这里需要动些脑筋 找到走过正确的坐标 (11,12行的作用
if(x==n && y==n)
{
for(int i=1;i<=k;i++)
{
cout<<"("<<r[i][1]<<","<<r[i][2]<<")";//格式
if(i != k)//当i没有遍历到最后一个的时候始终要输出->
cout<<"->";
}
//没有则返回
exit(0);
}
int tx,ty;
for(int i=0;i<4;i++)
{
tx=x+fx[i];
ty=y+fy[i];
if(a[tx][ty]=='0')// 这个位置可以走 则继续从左上右下判断 直到走到终点
{
dfs(tx,ty,k+1);
}
}
}
int main()
{
cin>>n;//输入迷宫
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
dfs(1,1,1);
return 0;
}
【DFS】迷宫的第一条路径 C++
于 2023-11-27 17:02:16 首次发布