比赛 板子大赛 评测结果 AAAAAAAAAA
题目名称 走迷宫 最终得分 100
用户昵称 zqy 运行时间 0.030 s
代码语言 C++ 内存使用 3.53 MiB
提交时间 2025-01-22 11:04:02
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int N=100;
int m,n,mp[N][N],sx,sy,ex,ey,px[N*N],py[N*N],fx[]={-1,0,0,1},fy[]={0,-1,1,0},mk[N][N],f;
void print(int len){
    for(int i=1;i<=len;i++){
        printf("(%d,%d)",px[i],py[i]);
        if(i!=len)printf("->");
    }
    printf("\n");
    f=1;
}
void dfs(int x,int y,int t){
    if(x==ex&&y==ey)print(t-1);
    else{
        for(int i=0;i<4;i++){
            int xx=x+fx[i],yy=y+fy[i];
            if(xx<1||xx>n||yy<1||yy>m||mp[xx][yy]==0||mk[xx][yy])continue;
            px[t]=xx,py[t]=yy,mk[xx][yy]=1;
            dfs(xx,yy,t+1);
            px[t]=py[t]=0,mk[xx][yy]=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",&mp[i][j]);
        }
    }
    scanf("%d %d",&sx,&sy);
    scanf("%d %d",&ex,&ey);
    if(mp[sx][sy]==0||mp[ex][ey]==0){
        printf("-1\n");
        return 0;
    }
    px[1]=sx,py[1]=sy,mk[sx][sy]=1;
    dfs(sx,sy,2);
    if(!f)printf("-1\n");
    return 0;
}