tle和re并驾齐驱
#include <bits/stdc++.h>
using namespace std;
char a[105][105];
int cnt=1;//已经记录过初始位置
int main()
{
int t;
cin>>t;
int n,m,k;
int x,y,d;
for(int i=1;i<=t;i++)
{
cin>>n>>m>>k;
cin>>x>>y>>d;
for(int j=1;j<=n;j++)
{
for(int k=1;k<=m;k++)
{
cin>>a[j][k];
}
}
//x,y,d都是指当前位置和朝向
while(k)//k步
{
int flag=1;//记录是否走过(要不要转向)
int xx=x,yy=y;//把原来的位置记录好,以便回溯
if(d==0)
{
y=y+1;
if(y<1 || y>m || a[x][y]=='x')
{
x=xx;
y=yy;
}
else
{
cnt++;
flag=0;
}
}
if(d==1)
{
x=x+1;
if(x<1 || x>n || a[x][y]=='x')
{
x=xx;
y=yy;
}
else
{
cnt++;
flag=0;
}
}
if(d==2)
{
y=y-1;
if(y<1 || y>m || a[x][y]=='x')
{
x=xx;
y=yy;
}
else
{
cnt++;
flag=0;
}
}
if(d==3)
{
x=x-1;
if(x<1 || x>n || a[x][y]=='x')
{
x=xx;
y=yy;
}
else
{
cnt++;
flag=0;
}
}
if(flag==1)
{
d=(d+5)%4;
}
}
}
cout<<cnt;
return 0;
}