本地测试过测试点1,3,4,但是爆0了,求助谢谢大神们。。。
#include<bits/stdc++.h>
using namespace std;
char mp[1005][1005];
int T,t,n,m,k,x,y,d,i,ct,flag;
int main()
{
scanf("%lld\n",&T);
for(t=0;t<T;++t)
{
ct=1;
scanf("%lld %lld %lld\n",&n,&m,&k);
scanf("%lld %lld %lld\n",&x,&y,&d);
for(i=1;i<=n;++i)
{
if(i==n&&t==T-1)
{
scanf("%s",&mp[i][1]);
break;
}
scanf("%s\n",&mp[i][1]);
}
mp[x][y]='o';
for(int k0=0;k0<k;++k0)
{
flag=1;
if(d==0)
{
if(y+1<=m)
{
if(mp[x][y+1]!='x')
{
y=y+1;
ct+=(mp[x][y]=='.');
mp[x][y]='o';
flag=0;
//printf("直行到%d,%d\n",x,y);
}
}
if(flag)
{
d=(d+1)%4;
//printf("右转,目前%d\n",d);
continue;
}
}
if(d==1)
{
if(x+1<=n)
{
if(mp[x+1][y]!='x')
{
x=x+1;
ct+=(mp[x][y]=='.');
mp[x][y]='o';
flag=0;
//printf("直行到%d,%d\n",x,y);
}
}
if(flag)
{
d=(d+1)%4;
//printf("右转,目前%d\n",d);
continue;
}
}
if(d==2)
{
if(y-1>0)
{
if(mp[x][y-1]!='x')
{
y=y-1;
ct+=(mp[x][y]=='.');
mp[x][y]='o';
flag=0;
//printf("直行到%d,%d\n",x,y);
}
}
if(flag)
{
d=(d+1)%4;
//printf("右转,目前%d\n",d);
continue;
}
}
if(d==3)
{
if(x-1>0)
{
if(mp[x-1][y]!='x')
{
x=x-1;
ct+=(mp[x][y]=='.');
mp[x][y]='o';
flag=0;
//printf("直行到%d,%d\n",x,y);
}
}
if(flag)
{
d=(d+1)%4;
//printf("右转,目前%d\n",d);
continue;
}
}
}
printf("%d\n",ct);
/*
for(int aa=0;aa<n;aa++)
{
for(int bb=0;bb<m;bb++)
{
printf("%c",mp[aa][bb]);
}
printf("\n");
*/
}
return 0;
}