题目链接↑
AC代码↓
#include<bits/stdc++.h>
using namespace std;
//迷宫的路径
char a[20][20];//地图
bool flag[20][20];//标记 flag[i][j] 0没去过 1代表去过
int n,m,res;//行 列 答案种数
struct node{
int x,y;
}path[400];
//右下左上
int dx[]={0,1,0, -1};
int dy[]={1,0,-1, 0};
void dfs(int step,int sx,int sy){//下一步的起点
if(sx==n&&sy==m){
cout<<++res<<':'<<"1,1";
for(int i=2;i<step;i++)
cout<<"->"<<path[i].x<<','<<path[i].y;
cout<<endl;
return;
}
for(int i = 0;i<4;i++){
int tx = sx+dx[i];
int ty = sy+dy[i];
if(a[tx][ty]!='#'&&tx>=1&&tx<=n&&ty>=1&&ty<=m&&flag[tx][ty]==0){
flag[tx][ty]=1;
path[step].x=tx;
path[step].y=ty;
dfs(step+1,tx,ty);
flag[tx][ty]=0;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
flag[1][1]=1;
dfs(2,1,1);
if(res==0)
cout<<"no";
return 0;
}