0分,全是WA,但是样例没有问题,不信可试一下,求大佬改一下
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int t;
cin>>t;
int const tmpt=t;
int ans[tmpt];
for(int num=1;num<=t;num++)
{
int n,m,k;
cin>>n>>m>>k;
int const tmpn=n,tmpm=m;
char s[tmpn*tmpm+1];
char st[tmpn*tmpm+1];
int x,y,d;
cin>>x>>y>>d;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>s[m*(i-1)+j-1];
st[m*(i-1)+j-1]='0';
}
}
st[m*(x-1)+y-1]='1';
int cnt=1;
for(int i=1;i<k;i++)
{
switch(d)
{
case 0:
if(y+1<=m&&s[m*(x-1)+y]=='.')
{
y++;
if(st[m*(x-1)+y-1]='0')
{
st[m*(x-1)+y-1]='1';
cnt++;
}
break;
}
else
{
d++;
break;
}
case 1:
if(x+1<=n&&s[m*x+y-1]=='.')
{
x++;
if(st[m*(x-1)+y-1]=='0')
{
st[m*(x-1)+y-1]='1';
cnt++;
}
break;
}
else
{
d++;
break;
}
case 2:
if(y-1>=1&&s[m*(x-1)+y-2]=='.')
{
y--;
if(st[m*(x-1)+y-1]=='0')
{
st[m*(x-1)+y-1]='1';
cnt++;
}
break;
}
else
{
d++;
break;
}
case 3:
if(x-1>=1&&s[m*(x-2)+y-1]=='.')
{
x--;
if(st[m*(x-1)+y-1]=='0')
{
st[m*(x-1)+y-1]='1';
cnt++;
}
break;
}
else
{
d=0;
i--;
break;
}
}
}
ans[num-1]=cnt;
}
for(int i=0;i<t;i++)
{
cout<<ans[i]<<endl;
}
return 0;
}