aryan @ 2024-11-08 20:29:04
#include<iostream>
using namespace std;
int dx[]={1,0,-1,0},dy[]={0,-1,0,1};
char map[1005][1005];
bool vis[1005][1005];
int main(){
int x,T,y,nx,ny,d,k,cnt,n,m;
cin>>T;
while(T--){
cnt=1;
for(int i=0;i<1005;i++){
for(int j=0;j<1005;j++){
map[i][j]='x';
vis[i][j]=0;
}
}
cin>>n>>m>>k;
cin>>x>>y>>d;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>map[i][j];
}
}
while(k--){
if(map[x+dx[d]][y+dy[d]]=='x'){
d=d+1%4;continue;
}
nx=x+dx[d];
ny=y+dy[d];
if(vis[nx][ny]==0)cnt++;
vis[nx][ny]=1;
x=nx;y=ny;
}
cout<<cnt<<'\n';
}
return 0;
}
by Are_you_sure_yxy @ 2024-11-08 23:27:27
求关
#include<bits/stdc++.h>
using namespace std;
char M[1005][1005];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int vis[1005][1005];
int main()
{
int T,n,m,cnt,k,x,y,d,ny,nx;
cin>>T;
while(T--){
cin>>n>>m>>k;
cin>>x>>y>>d;
cnt=1;
for(int i=0;i<1005;i++)
for(int j=0;j<1005;j++)
M[i][j]='x',vis[i][j]=0;
cnt=1;
vis[x][y]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>M[i][j];
}
while(k--){
nx=x+dx[d],ny=y+dy[d];
if(M[nx][ny]=='x'){d=(d+1)%4;continue;}
x=nx,y=ny;
if(!vis[x][y]) vis[x][y]=1,cnt++;
}
cout<<cnt<<endl;
}
return 0;
}