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=='#'
是假的话,也就不会有进一步操作了,考虑解决办法:
j--
;getchar
改成 cin
,然后再挨个将字符串中的元素付给 a 数组;建议将 can=true;
后面紧跟一句 return;
by Il1_1_3 @ 2024-10-31 22:53:49
赋给 a 数组