代码:
#include<iostream>
using namespace std;
int d = 0;
int x, y;
char map1[1000][1000];
int t, k;
int cnt = 1;
a
int dt(int x0, int y0, int d) {
if (k == 0)
{
return cnt;
}
cout << x0 << " " << y0 << " " << d << endl;
if (d == 0)
{
if (y0 + 1 > y || map1[x0][y0 + 1] == 'x') {
k--;
dt(x0, y0, (d + 1) % 4);
}
else {
k--;
cnt++;
dt(x0, y0++, d);
}
}
else if (d == 1)
{
if (x0 + 1 > x || map1[x0 + 1][y0] == 'x') {
k--;
dt(x0, y0, (d + 1) % 4);
}
else {
k--;
cnt++;
dt(x0++, y0, d);
}
}
else if (d == 2)
{
if (y0 - 1 < y || map1[x0][y0 - 1] == 'x') {
k--;
dt(x0, y0, (d + 1) % 4);
}
else {
k--;
cnt++;
dt(x0, y0--, d);
}
}
else
{
if (x0 - 1 < x || map1[x0 - 1][y0] == 'x') {
k--;
dt(x0, y0, (d + 1) % 4);
}
else {
k--;
cnt++;
dt(x0--, y0, d);
}
}
}
int main()
{
cin >> t;
for (int i = 1; i <= t; i++) {
int x0, y0;
cin >> x >> y >> k >> x0 >> y0 >> d;
for (int x1 = 0; x1 < x; x1++)
{
for (int y1 = 0; y1 < y; y1++)
{
cin >> map1[x1][y1];
}
}
dt(x0, y0, d);
cout << cnt << endl;
cnt = 0;
}
return 0;
}