求助!!!40分求调!!!

B3625 迷宫寻路

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 已关


|