求给位大佬帮我看看(悬关)
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
char s[110][110];
int flag;
int dr[4]={-1,0,1,0};
int dc[4]={0,1,0,-1};
int vis[110][110];
int cnt;
bool check(int x,int y)
{
if(x<1||x>n||y<1||y>m||vis[x][y]==1||s[x][y]=='#')
{
return false;
}
return true;
}
void dfs(int row,int col)
{
if(s[row][col]=='#') return;
if(row==n&&col==m) flag=1;
if(flag==1) return;
for(int i=0;i<4;i++)
{
int r=row+dr[i];
int c=col+dc[i];
if(check(r,c)==true)
{
vis[r][c]=1;
dfs(r,c);
vis[r][c]=0;
}
}
return;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>s[i][j];
vis[1][1]=1;
dfs(1,1);
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}