站外题,悬棺求救!!!很急!!!

题目总版

wky_wsy @ 2024-10-31 22:41:48

事故发生地
如你所见,这个输出看上去是对的,但结果是WA。
源代码:悬棺求调,很急,在线等!!!!!

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,xa,ya,xb,yb;
char a[110][110];
bool can=false;
inline void dfs(int x,int y){//为了卡常
    if(x==xb&&y==yb){
        can=true;
    }
    if(x>=0&&x<n&&y>=0&&y<n&&a[x][y]=='.'){
        a[x][y]='#';
        dfs(x,y+1);
        dfs(x+1,y);
        dfs(x,y-1);
        dfs(x-1,y);
    }
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        cin>>n;

        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                char ls=getchar();
                if(ls=='.'||ls=='#'){
                    a[i][j]=ls;
                }
            }
        }
        cin>>xa>>ya>>xb>>yb;

        if(a[xa][ya]=='#'||a[xb][yb]=='#'){
            puts("NO");
        }
        else{
            dfs(xa,ya);
            if(can==true) puts("YES");
            else puts("NO");
        }
        can=false;
    }
}

by Il1_1_3 @ 2024-10-31 22:53:27

@wky_wsy

char ls=getchar();

这行代码有可能会读到换行符 \n,虽然后面判断了,但是如果 ls=='.'||ls=='#' 是假的话,也就不会有进一步操作了,考虑解决办法:

建议将 can=true; 后面紧跟一句 return;


by Il1_1_3 @ 2024-10-31 22:53:49

赋给 a 数组


|