这题是关于回溯与打印的问题
但比较简单的一点是找到dfs的第一条出路后就直接打印
还是用双向队列存储打印,用特判判断输出
代码也不是很难
借鉴一下也看得懂
下面是代码 希望能火 麻烦点个赞并收藏一下 给我一些继续发的信心
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
char a[25][25],b[25][25];
ll dx[]={0,-1,0,1},dy[]={-1,0,1,0};
struct node{
ll x,y;
};
deque<node> s;
void p()
{
cout<<"(1,1)";
for(int i=1;i<s.size();i++)
{
cout<<"->("<<s[i].x<<","<<s[i].y<<")";
}
}
void dfs(ll x,ll y)
{
if(x==n&&y==n)
{
p();
exit(0);
}
for(int i=0;i<4;i++)
{
ll di=x+dx[i],dj=y+dy[i];
if(di>=1&&di<=n&&dj>=1&&dj<=n&&a[di][dj]=='0'&&b[di][dj]==0)
{
b[di][dj]=1;
s.push_back({di,dj});
dfs(di,dj);
b[di][dj]=0;
s.pop_back();
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j];
s.push_back({1,1});
b[1][1]=1;
dfs(1,1);
return 0;
}