mope @ 2024-02-02 13:22:24
#include<iostream>
using namespace std;
int n,m,flag=0;
int a[105][105],v[105][105];
int dx[4]={0,-1,0,1},dy[4]={1,0,-1,0};
void dfs(int p,int q){
if(p==n&&q==m) flag=1;
if(flag==1) return;
for(int i=0;i<4;i++){
int tx=p+dx[i],ty=q+dy[i];
if(a[tx][ty]==1&&v[tx][ty]==0){
v[tx][ty]=1;
dfs(tx,ty);
v[tx][ty]=0;
}
}
}
int main(){
char c;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>c;
if(c=='.') a[i][j]=1;
}
v[1][1]=1;
dfs(1,1);
if(flag) cout<<"Yes";
else cout<<"No";
}
by kexun_kevin @ 2024-02-04 16:39:04
这题不用回溯,去掉
v[tx][ty]=0;