目录
一、题目
二、解析
二、1、不怎么好说,简单BFS
二、2、Accepted代码
#include<bits/stdc++.h>
using namespace std;
int vis[1010][1010];
char g[1010][1010];
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int main(){
freopen("explore.in","r",stdin);
freopen("explore.out","w",stdout);
int t;
cin>>t;
while(t--){
int n,m,k,x,y,d,cnt=1;
memset(vis,-1,sizeof(vis));
cin>>n>>m>>k>>x>>y>>d;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>g[i][j],vis[i][j]=(g[i][j]=='x'?1:0);
vis[x][y]=2;
while(k--){
int dx=x+dir[d][0],dy=y+dir[d][1];
int i=0;
while((g[dx][dy]=='x'||vis[dx][dy]==-1)&&k)d=(d+1)%4,dx=x+dir[d][0],dy=y+dir[d][1],i++,k--;
if(i==4)break;
x=dx,y=dy;
if(vis[x][y]==0)cnt++,vis[x][y]=2;
}cout<<cnt<<'\n';
}fclose(stdin);
fclose(stdout);
return 0;
}
二、3、易爆0处
二、3、1、口诀巧查 一头二文三查中
一头:看函数名、头文件。
二文:看文件操作,有没有在最后加fclose。
三查中:检查中间的代码