2024 CSP-J 2
2025-08-08 18:59:23
发布于:浙江
32阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
bool vis[1010][1010];
char a[1010][1010];
int n,m;
bool check(int x,int y,int d){
int next_x=x+dx[d];
int next_y=y+dy[d];
if(((next_x>=1&&next_x<=n)&&(next_y>=1&&next_y<=m))&&a[next_x][next_y]=='.'){
return true;
}
return false;
}
int main(){
//freopen("explore.in","r",stdin); // 打开输入数据文件
// freopen("explore.out","w",stdout); // 保存输出文件
int T;
cin>>T;
while(T--){
int k,ans=0;
int x,y,d;
cin>>n>>m>>k;
cin>>x>>y>>d;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
vis[i][j]=false;
}
}
vis[x][y]=true;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
while(k--){
if(check(x,y,d)==true){
x+=dx[d];
y+=dy[d];
vis[x][y]=true;
//cout<<x<<" "<<y<<endl;
}
else {
d=((d+1)%4);
//cout<<d<<endl;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(vis[i][j]==true){
//cout<<i<<" "<<j<<endl;
ans++;
}
}
}
cout<<ans<<endl;
}
// fclose(stdin);
// fclose(stdout);
return 0;
}
这里空空如也
有帮助,赞一个