| 比赛 | 
    板子大赛 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    走迷宫 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    李金泽 | 
    运行时间 | 
    0.017 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    1.55 MiB  | 
    | 提交时间 | 
    2025-01-22 16:41:49 | 
显示代码纯文本
#include<cstdio>
#define N 20
using namespace std;
int n,m,sx,sy,fx,fy,nx[4]={-1,0,0,1},ny[4]={0,-1,1,0};bool b[N][N],v[N][N],f=1;
struct node{int x,y;}a[N*N];
void dfs(int x,int y,int s)
{
    v[x][y]=1;
    if(x==fx&&y==fy)
    {
        f=0;
        for(int i=1;i<s;i++)printf("(%d,%d)->",a[i].x,a[i].y);
        printf("(%d,%d)\n",fx,fy);
    }
    a[s]={x,y};
    for(int i=0;i<4;i++)
    {
        int tx=x+nx[i],ty=y+ny[i];
        if(tx<1||tx>n||ty<1||ty>m)continue;
        if(!b[tx][ty]||v[tx][ty])continue;
        dfs(tx,ty,s+1);
        v[tx][ty]=0;
    }
}
int main()
{
    freopen("maize.in","r",stdin);freopen("maize.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",b[i]+j);
    scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
    dfs(sx,sy,1);
    if(f)printf("-1");
    return 0;
}