哪位大佬帮我看一下哪里错了
2024-08-08 15:35:23
发布于:广东
#include <bits/stdc++.h>
using namespace std;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
char mp[110][110];
int vis[110][110],n,m,flag=0;
struct node{
int x,y;
char val;
};
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
if(mp[1][1]=='#'){
cout<<"NO";
return 0;
}
node start={1,1,mp[1][1]};
vis[1][1]=1;
queue<node>q;
q.push(start);
while(!q.empty()){
node head=q.front();
q.pop();
if(head.x==n&&head.y==m){
flag=1;
break;
}
for(int i=0;i<4;i++){
int xx=head.x+dir[i][0];
int yy=head.x+dir[i][1];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[xx][yy]=='.'&&vis[xx][yy]==0){
node canGo={xx,yy,'.'};
vis[xx][yy]=1;
q.push(canGo);
}
}
}
if(flag==1)cout<<"YES";
else cout<<"NO";
return 0;
}
全部评论 3
广搜>>>
// . . # # # // # . . . . // # . # . # // # . # . # // # . # . . #include <bits/stdc++.h> using namespace std; struct node{ int x,y; }; char ma[50][50]; bool vis[50][50]; queue<node>q; int n,m; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; void bfs(int x,int y){ q.push((node){x,y}); vis[x][y]=1; while(!q.empty()){ x=q.front().x; y=q.front().y; q.pop(); if(x==n&&y==m){ cout<<"YES"<<endl; return; } for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx<=0||nx>n||ny<=0||ny>m) continue; if(ma[nx][ny]=='#') continue; if(vis[nx][ny]==1) continue; q.push((node){nx,ny}); vis[nx][ny]=1; } } cout<<"NO"<<endl; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>ma[i][j]; } } bfs(1,1); return 0; }
深搜>>>
// . . # # # // # . . . . // # . # . # // # . # . # // # . # . . #include <bits/stdc++.h> using namespace std; int n,m; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; char ma[50][50]; bool vis[50][50]; bool flag=0; void dfs(int st,int x,int y){ if(x==n&&y==m){ flag=1; return; } for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx<=0||nx>n||ny<=0||ny>m) continue; if(ma[nx][ny]=='#') continue; if(vis[nx][ny]==1) continue; vis[nx][ny]=1; dfs(st+1,nx,ny); } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>ma[i][j]; } } vis[1][1]=1; dfs(0,1,1); if(flag==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }
2024-08-10 来自 浙江
0《电梯游戏》你内容看了吗?只是同名
2024-08-10 来自 浙江
0看到第三部了
2024-08-10 来自 广东
06
2024-08-10 来自 浙江
0
int yy=head.x+dir[i][1];
........................^
不要混用2024-08-10 来自 浙江
0
有帮助,赞一个