我的
代码
#include<iostream>
using namespace std;
void walk(int **a, int x, int y, char s, int k) {
char c[4] = {'U', 'R', 'D', 'L'};
int t;
for (int i = 0; i < 4; ++i)
if (c[i] == s)
t = i;
while (k) { //循环步数次
if (a[x][y]) { //黑格改为白格并转向
a[x][y] = 0;
t = (t + 1) % 4;
s = c[t];
} else { //白格改为黑格并转向
a[x][y] = 1;
t = (t + 4 - 1) % 4;
s = c[t];
}
switch (t) { //前进一步
case 0:
--x;
break;
case 1:
++y;
break;
case 2:
++x;
break;
case 3:
--y;
break;
}
--k;
}
cout << x << " " << y;
}
int main() {
int **a, m, n, x, y, k;
char s;
cin >> m >> n;
a = new int *[m];
for (int i = 0; i < m; ++i)
a[i] = new int[n];
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
cin >> a[i][j];
cin >> x >> y >> s >> k;
walk(a, x, y, s, k);
return 0;
}