向各位大佬求助(B3625 迷宫寻路)

B3625 迷宫寻路

Brandon_Sym @ 2024-07-04 21:09:17

本菜鸡的代码如下,5个AC,五个TLE,求各位指点;

#include<bits/stdc++.h>
using namespace std;
int a[110][110];
int n,m,flag=0;
void hhh(int x,int y){
    if(flag==1){
        return ;
    }
    if(x==n&&y==m){
        flag=1;
        return ;
    }
    if(a[x+1][y]==1&&x+1>=1&&x+1<=n&&y>=1&&y<=m){
        a[x][y]=0;
        hhh(x+1,y);
        a[x][y]=1;
    }
    if(flag==1){
        return ;
    }
    if(a[x-1][y]==1&&x-1>=1&&x-1<=n&&y>=1&&y<=m){
        a[x][y]=0;
        hhh(x-1,y);
        a[x][y]=1;
    }
    if(flag==1){
        return ;
    }
    if(a[x][y+1]==1&&x>=1&&x<=n&&y+1>=1&&y+1<=m){
        a[x][y]=0;
        hhh(x,y+1);
        a[x][y]=1;
    }
    if(flag==1){
        return ;
    }
    if(a[x][y-1]==1&&x>=1&&x<=n&&y-1>=1&&y-1<=m){
        a[x][y]=0;
        hhh(x,y-1);
        a[x][y]=1;
    }
    if(flag==1){
        return ;
    }
    return ;
}
int main(){

    cin>>n>>m;
    string c;
    for(int i=1;i<=n;++i){
        cin>>c;
        for(int j=1;j<=m;++j){  
            if(c[j-1]=='.'){
                a[i][j]=1;
            }
            else a[i][j]=0;
        }
    }
    hhh(1,1);
    if(flag==1){
        cout<<"Yes";
    }
    else cout<<"No";
    return 0;
}

码风 离谱 清奇,请各位原谅!


by Wyf32627 @ 2024-07-04 21:42:17

建议hhh函数中,flag==1全删了,并且string输入改char的二维数组,如下

char a[110][110];//定全局
//写int main()中
getchar();
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        a[i][j]=getchar();
    }
    getchar();
}

by Brandon_Sym @ 2024-07-05 20:39:39

@Wyf32627 谢谢,已关


|