#include<bits/stdc++.h>
using namespace std;
int s[1005][1005],t[1005][1005];
int const dx[]={0,1,0,-1},dy[]={1,0,-1,0};//四个方向
int main()
{
int T;
cin >>T;
while(T--)
{
int n,m,k,x,y,d;
cin >>n>>m>>k; //n,m地图行与列 k是走几次
cin >>x >>y >>d; //x,y出发点坐标,d是方向
char c;
for(int i=1;i <=n;i++) //输入地图
for(int j=1;j<=m;j++)
{
cin>>c;
if(c =='x')
s[i][j]=1;
else
s[i][j]=0;
t[i][j]=0;
}
t[x][y]=1; //出发点
for(int i=0;i<=n+1;i++) //绘制边界
s[i][0]=s[i][m+1]=1;
for(int i=0;i<=m+1;i++) //绘制边界
s[0][i]=s[n+1][i]=1;
while(k--) //模拟探险过程
{
if(s[x+dx[d]][y+dy[d]]) //有障碍物,调整方向
d =(d+1)%4;
else // 没障碍物,走过去
x +=dx[d],y +=dy[d];
t[x][y]=1; //标记走过
}
int ans =0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans +=t[i][j]; //统计结果
cout <<ans <<endl; //输出答案
}
return 0;
}
2024CSP-J 普及组第二轮试题及解析(第二题、地图探险(explore))
猜你喜欢
转载自blog.csdn.net/weixin_60445850/article/details/143267086
今日推荐
周排行