考场上样例全过,在家打出错了,大体是这样,dfs有问题,没超
#include<bits/stdc++.h>
using namespace std;
int n,m,k,t;
char a[1005][1005];
int fx[5]={0,1,0,-1};
int fy[5]={1,0,-1,0};
void dfs(int x,int y,int d,int p,int tu){
a[x][y]='@';
if(p==k||tu==4){
return ;
}
int tx=x+fx[d];
int ty=y+fy[d];
if(a[tx][ty]=='.') dfs(tx,ty,d,p+1,0);
else if(a[tx][ty]=='@') dfs(tx,ty,d,p+1,0);
else dfs(x,y,(d+1)%4,p,tu+1);
}
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n>>m>>k;
int x,y,d;
cin>>x>>y>>d;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
dfs(x,y,d,0,0);
int sum=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='@'){
sum++;
}
}
}
cout<<sum<<endl;
}
return 0;
}