样例都过不去求助
  • 板块P1238 走迷宫
  • 楼主Milthm
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/12/11 15:23
  • 上次更新2023/10/24 07:59:09
查看原帖
样例都过不去求助
761125
Milthm楼主2022/12/11 15:23

rt,样例输出-1,不知道为什么,大佬们看看代码那里有问题

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool a[20][20];
int n,m,ans,n1,n2,m1,m2,b[20][20],c[5000000][2],p;
void print(){
    for(int i=1;i<p;i++){
        cout<<"("<<c[i][0]<<","<<c[i][1]<<")->";
    }
    cout<<"("<<c[p][0]<<","<<c[p][1]<<")"<<endl;
    ans++;
}
void dfs(int x,int y){
    if(x==m1&&y==m2){
        print();x=n1;y=n2;
    }
    if(x>1&&a[x-1][y]==1&&b[x-1][y]!=1){
        b[x-1][y]=1;
        p++;
        c[p][0]=x;c[p][1]=y;
        dfs(x-1,y);
        b[x-1][y]=0;
        p--;
    }
    if(y>1&&a[x][y-1]==1&&b[x][y-1]!=1){
        b[x][y-1]=1;
        p++;
        c[p][0]=x;c[p][1]=y;
        dfs(x,y-1);
        b[x][y-1]=0;
        p--;
    }
    if(x<n&&a[x+1][y]==1&&b[x+1][y]!=1){
        b[x+1][y]=1;
        p++;
        c[p][0]=x;c[p][1]=y;
        dfs(x+1,y);
        b[x+1][y]=0;
        p--;
    }
    if(y<n&&a[x][y+1]==1&&b[x][y+1]!=1){
        b[x][y+1]=1;
        p++;
        c[p][0]=x;c[p][1]=y;
        dfs(x,y+1);
        b[x][y+1]=0;
        p--;
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    cin>>n1>>n2>>m1>>m2;
    dfs(n1,n2);
    if(ans==0)cout<<-1;
    return 0;
}
2022/12/11 15:23
加载中...