0分求助

B3625 迷宫寻路

王仁之2013 @ 2024-08-05 13:51:37

#include<bits/stdc++.h>
using namespace std;
char mi[10100][10100];
int n,m;
bool vis[10100][10100],ok;
void dfs(int x,int y){

    if(mi[n][m]=='#') return;
    if(n<=1||m<=1) return;
    if(vis[x][y]) return;
    vis[x][y]=1;
    if(x==n&&y==m) ok=true;
    dfs(x+1,y);
    dfs(x-1,y);
    dfs(x,y+1);
    dfs(x,y-1);

}
int main(){

    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>mi[i][j];
        }
    }
    dfs(1,1);
    if(ok){
        cout<<"Yes";
    }else{
        cout<<"No";
    }
}

by yangyang826 @ 2024-08-05 13:56:11

n m x y 混了

边界限制错误


by Kobe_BryantQAQ @ 2024-08-05 13:56:28

运行时错误

在洛谷平台上,“RE”代表“Runtime Error”,即运行时错误。 这种错误通常发生在程序执行期间,可能由于多种原因引起,包括但不限于:

逻辑错误:程序中的算法或逻辑不正确,导致程序在执行过程中出现意外行为。

输入错误:如果程序没有正确处理输入数据,也可能导致运行时错误。

数组指针越界:当程序试图访问数组的一个不存在的元素时,尤其是当索引超出数组边界时,也会触发运行时错误。

除以零:如果程序中包含除以零的操作,也会导致运行时错误。

这些错误可能由编程语言的不同特性或平台特定的要求引起,因此在编写和调试代码时需要特别注意。‌


by Kobe_BryantQAQ @ 2024-08-05 14:10:56

参考代码(BFS):

#include <bits/stdc++.h>
using namespace std;
struct dot {
    int x,y;
    int mi;
};
bool f=0;
queue<dot> que;
char c[150][150];
int vis[150][150];
int n,m;
int ex,ey;
int dx[4]= {0,1,-1,0};
int dy[4]= {1,0,0,-1};
void bfs() {
    while(!que.empty()) {
        dot t=que.front();
        que.pop();
        for(int i=0; i<4; i++) {
            int nx=t.x+dx[i],ny=t.y+dy[i];
            int nmi=t.mi+1;
            if(nx>=1 && nx<=n && ny>=1 && ny<=m && !vis[nx][ny]) {
                vis[nx][ny]=1;
                que.push(dot {nx,ny,nmi});
                if(nx==ex && ny==ey) {
                    cout<<"Yes"<<endl;
                    f=1;
                    return;
                }
            }
        }
    }
    return;
}
int main() {
    cin>>n>>m;
    que.push(dot {1,1,0});
    vis[1][1]=1;
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++) {
            cin>>c[i][j];
            if(c[i][j]=='#') {
                vis[i][j]=1;
            }
        }
    }
    ex=n,ey=m;
    f=0;
    bfs();
    if(!f)cout<<"No"<<endl;
    return 0;
}

by 王仁之2013 @ 2024-08-05 14:18:01

谢谢


|