awaken1802 @ 2023-07-15 15:58:09
代码:
#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,visit[110][110],ji;
long long wx[4]={-1,0,0,1};
long long wy[4]={0,-1,1,0};
string s[110];
long long dfs(long long kx,long long ky){
if(kx==n&&ky==m)return 1;
for(long long i=0;i<4;i++){
long long tx=kx+wx[i];
long long ty=ky+wy[i];
if(tx>=1&&ty>=1&&tx<=n&&ty<=m&&s[tx][ty]=='.'&&visit[tx][ty]==0){
visit[tx][ty]=1;
dfs(tx,ty);
}
}
return 0;
}
int main(){
scanf("%lld%lld",&n,&m);
for(long long i=1;i<=n;i++){
for(long long j=1;j<=m;j++){
visit[i][j]=0;
}
}
for(long long i=1;i<=n;i++)cin>>s[i];
if(dfs(1,1)) printf("Yes\n");
else printf("No\n");
return 0;
}
by Youth_Glory @ 2023-07-19 14:55:38
你那个if判断完后的里面的那个dfs的答案没有保存,所以就算他搜到了终点,你也不知道
by Youth_Glory @ 2023-07-19 14:58:20
vistt[tx][ty]后面的那一句dfs(tx,ty)你应该比如说定义一个pd变量来存储,比如改成ll pd=dfs(tx,ty)然后后面再加一个,如果pd等于1,就直接输出yes,并结束程序,这里教你一个可以直接结束程序的方法,就是直接写exit(0);这样所有程序都会结束
by awaken1802 @ 2023-07-19 15:49:56
@weifeng_yuhuo 谢谢大佬
by awaken1802 @ 2023-07-19 15:50:21
@weifeng_yuhuo 已关