王仁之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
谢谢