#include<iostream>
using namespace std;
void chaoxiang(char toward, int& toward_n) { //开始时录入朝向
if (toward == 'U')//上
toward_n = 1;
if (toward == 'R')//右
toward_n = 2;
if (toward == 'D')//下
toward_n = 3;
if (toward == 'L')//左
toward_n = 4;
}
void zhuanwan(int& temp, int& toward_n) { //根据黑白格改变朝向
if (temp == 1) { //黑格处右转
if (toward_n != 4) {
toward_n++;
}
else {
toward_n = 1;
}
temp = 0; //黑格改白格
}
else if (temp == 0) { //白格处左转
if (toward_n != 1) {
toward_n--;
}
else {
toward_n = 4;
}
temp = 1; //白格改黑格
}
}
int main() {
int m, n;
cin >> m >> n;
int a[100][100] = { 0 };
int i, j;
for (i = 0; i < m; i++) {//行
for (j = 0; j < n; j++) {//列
cin >> a[i][j];
}
}
int x, y;
cin >> x >> y;
char toward;
cin >> toward;
int toward_n;
chaoxiang(toward, toward_n);
int k;
cin >> k;
for (int i = 1; i <= k; i++) { //循环走k步
if (a[x][y] == 1) { //在黑格
switch (toward_n) {
case 1:
zhuanwan(a[x][y], toward_n);
y++;
break;
case 2:
zhuanwan(a[x][y], toward_n);
x++;
break;
case 3:
zhuanwan(a[x][y], toward_n);
y--;
break;
case 4:
zhuanwan(a[x][y], toward_n);
x--;
break;
}
}
else if (a[x][y] == 0) { //在白格
switch (toward_n) {
case 1:
zhuanwan(a[x][y], toward_n);
y--;
break;
case 2:
zhuanwan(a[x][y], toward_n);
x--;
break;
case 3:
zhuanwan(a[x][y], toward_n);
y++;
break;
case 4:
zhuanwan(a[x][y], toward_n);
x++;
break;
}
}
}
cout << x << " " << y << endl;
return 0;
}
测试结果: