MA_tian @ 2024-11-06 21:28:08
rt,如题
#include<bits/stdc++.h>
using namespace std;
int t,n,m,k,p[1005][1005];
char a[1005][1005];
int main(){
// freopen("explore.in","r",stdin);
// freopen("explore.out","w",stdout);
cin>>t;
while(t--){
memset(p,0,sizeof(p));
int x,y,to,ans=1;
cin>>n>>m>>k;
cin>>x>>y>>to;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
p[x][y]=1;
while(k>0){
while(k>0){
if(to==0){
if(a[x][y+1]!='.'){
k--;
to=1;
}else{
break;
}
}
if(to==1){
if(a[x+1][y]!='.'){
k--;
to=2;
}else{
break;
}
}
if(to==2){
if(a[x][y-1]!='.'){
k--;
to=3;
}else{
break;
}
}
if(to==3){
if(a[x-1][y]!='.'){
k--;
to=0;
}else{
break;
}
}
}
if(k>0){
if(to==0){
while(a[x][y+1]=='.'&&k>0){
y++;
k--;
if(!p[x][y])ans++;
p[x][y]=1;
}
}
if(to==1){
while(a[x+1][y]=='.'&&k>0){
x++;
k--;
if(!p[x][y])ans++;
p[x][y]=1;
}
}
if(to==2){
while(a[x][y-1]=='.'&&k>0){
y--;
k--;
if(!p[x][y])ans++;
p[x][y]=1;
}
}
if(to==3){
while(a[x-1][y]=='.'&&k>0){
x--;
k--;
if(!p[x][y])ans++;
p[x][y]=1;
}
}
}
}
cout<<ans<<endl;
}
return 0;
}