好气呀!!!为什么只有九十分???第六个测试的WA,求大佬们指教我这个小蒟蒻

B3625 迷宫寻路

BBY123 @ 2022-09-02 18:30:42

#include<bits/stdc++.h>
using namespace std;
char a[100][100];
int v[100][100];
int dx[10]={0,1,0,-1},dy[10]={1,0,-1,0};
int tx,ty,m,n,cnt=0;
void dfs(int x,int y){
    if(x==n&&y==m){
        cnt=1;
        return;
    }
    for(int k = 0;k < 4;k++){
        tx=x+dx[k];
        ty=y+dy[k];
        if(a[tx][ty]=='.'&&v[tx][ty]==0&&tx<=n&&ty<=m){
            v[tx][ty]=1;
            dfs(tx,ty);
            v[tx][ty]=0; 
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i = 1;i <= n;i++){
        for(int j = 1;j <= m;j++){
            cin>>a[i][j];
        }
    }
    dfs(1,1);
    if(cnt==1){
        cout<<"Yes";
    }
    else{
        cout<<"No";
    }
    return 0;
}

by WaltVBAlston @ 2022-09-02 18:33:53

@BBY123 两个问题,第一个比较要紧,数组开小了,开大一点就可以了

第二个就是v数组不用回溯设置回0,原因先自己想一下可以


by WaltVBAlston @ 2022-09-02 18:41:07

@BBY123 对您有用的话就请鸟我一下吧,不然显得我是个小丑


by BBY123 @ 2022-09-02 18:42:09

谢谢了,大恩大德无以回报,请受本蒟蒻一拜 三克油!!! (更感谢您的速度,3分钟就回帖了,真是功德无量!!!)


by WaltVBAlston @ 2022-09-02 18:45:06

@BBY123 草不至于,只是我回复一堆人没人鸟我搞得我都不知道你们看到了没有,显得我很没用


by BBY123 @ 2022-09-02 18:46:25

可能是没来得及看吧, 心态要好。


by WaltVBAlston @ 2022-09-02 18:48:34

@BBY123 嗯嗯


by to_be_an_expert @ 2023-02-22 17:31:04

刚开始着手算法,能麻烦解释一下为什么这一行“ int dx[10]={0,1,0,-1},dy[10]={1,0,-1,0};”这样写吗?


by willix @ 2023-04-19 18:21:02

@to_be_an_expert 这玩意的作用就是向四个方向探索的时候可以更方便的+1和-1,本质上就是个偷懒的东西,你也不希望代码又臭又长吧(


|