p11228,蒟蒻纯暴力模拟,有个地方考场里没问题,在家里就有问题了
#include<bits/stdc++.h>
using namespace std;
int n;
char map1[1006][1006];
int zx,zy,sp,xx,xy,fx,cnt;
int vis[1006][1006];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>zx>>zy>>sp;
cin>>xx>>xy>>fx;
memset(vis,0,sizeof(vis));
for(int j=1;j<=zx;j++){
for(int k=1;k<=zy;k++){
cin>>map1[j][k];
}
}
vis[xx][xy]=1;
for(int j=1;j<=sp;j++){
if(fx==0){
if(map1[xx][xy+1]=='.'){
vis[xx][xy+1]=1;
xy+=1;
continue;
}
else if(map1[xx][xy+1]=='x'){
fx=(fx+1)%4;
continue;
}
else{
fx=(fx+1)%4;
continue;
}
}
if(fx==1){
if(map1[xx+1][xy]=='.'){
vis[xx+1][xy]=1;
xx+=1;
continue;
}
else if(map1[xx+1][xy]=='x'){
fx=(fx+1)%4;
continue;
}
else{
fx=(fx+1)%4;
continue;
}
}
if(fx==2){
if(map1[xx][xy-1]=='.'){
vis[xx][xy-1]=1;
xy-=1;
continue;
}
else if(map1[xx][xy-1]=='x'){
fx=(fx+1)%4;
continue;
}
else{
fx=(fx+1)%4;
continue;
}
}
if(fx==3){
if(map1[xx-1][xy]=='.'){
vis[xx-1][xy]=1;
xx-=1;
continue;
}
else if(map1[xx-1][xy]=='x'){
fx=(fx+1)%4;
continue;
}
else{
fx=(fx+1)%4;
continue;
}
}
}
for(int j=1;j<=zx;j++){
for(int k=1;k<=zy;k++){
if(vis[j][k]==1){
cnt++;
}
}
}
cout<<cnt<<endl;
}
return 0;
}