#include using namespace std; const int N = 1010; int a[N][N];//装地图,1:代表有障碍物,0:代表是空地,2:代表是空地但我走过 int main() { //配置从文本文件读入数据 freopen("explore.in","r", stdin); freopen("explore.out","w", stdout); int T; cin >> T; while(T--){ //多组测试数据清空数据是最重要的 memset(a, 0, sizeof(a));//0:代表是空的,没有输入过 //n, m 表示地图的行数和列数,k 表示机器人执行操作的次数 int n, m, k; cin >> n >> m >> k; //(x,y):机器人的初始坐标,d是初始的朝向 int x, y, d; cin >> x >> y >> d; a[x][y] = 2; for (int i = 1; i <= n;i++) for (int j = 1; j <= m;j++){ char q; cin >> q; if (q == 'x') a[i][j] = 1;//障碍物是1,否则是0,0就不填写了 } //至此,输入结束 while(k--){ int nx, ny; if (d == 0) nx = x, ny = y + 1; if (d == 1) nx = x + 1, ny = y; if (d == 2) nx = x, ny = y - 1; if (d == 3) nx = x - 1, ny = y; if(a[nx][ny]==1 || nx>n || ny>m|| nx<1 || ny<1) { d = (d + 1) % 4; //cout << "Turn d=" << d << endl; } else { x = nx, y = ny, a[x][y] = 2; //cout << "x=" << x << ",y=" << y << " d=" << d << endl; } } //输出结果 int cnt = 0; for (int i = 1;i<=n;i++) for (int j = 1;j<=m;j++) if (a[i][j] == 2) cnt++; cout << cnt << endl; } return 0; }