这是我代码,样例5没过,但洛谷AC了,怎么办?
#include<bits/stdc++.h>
using namespace std;
int a[2010][2010];
bool b[2010][2010];
int n,m,k,x,y,d;
void dfs(int x,int y,int s,int d)
{
b[x][y]=1;
if(s==k)
{
return ;
}
if(d==0)
{
if(a[x][y+1]==1 && x>=1 && x<=n && y+1>=1 && y+1<=m)
{
dfs(x,y+1,s+1,d);
}
else dfs(x,y,s+1,(d+1)%4);
}
else if(d==1)
{
if(a[x+1][y]==1 && x+1>=1 && x+1<=n && y>=1 && y<=m)
{
dfs(x+1,y,s+1,d);
}
else dfs(x,y,s+1,(d+1)%4);
}
else if(d==2)
{
if(a[x][y-1]==1 && x>=1 && x<=n && y-1>=1 && y-1<=m)
{
dfs(x,y-1,s+1,d);
}
else dfs(x,y,s+1,(d+1)%4);
}
else if(d==3)
{
if(a[x-1][y]==1 && x-1>=1 && x-1<=n && y>=1 && y<=m)
{
dfs(x-1,y,s+1,d);
}
else dfs(x,y,s+1,(d+1)%4);
}
return ;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d%d%d",&n,&m,&k,&x,&y,&d);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
a[i][j]=0;
b[i][j]=0;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
char s;
cin>>s;
if(s=='.')
{
a[i][j]=1;
}
else
{
a[i][j]=0;
}
}
}
dfs(x,y,0,d);
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(b[i][j]==1)
{
ans++;
}
}
}
printf("%d\n",ans);
}
return 0;
}