#include <iostream>
using namespace std;
char map[12][12];
struct mod {
// 以下三个变量分别表示:物体在map[y][x]处, 物体的朝向(默认为北)
int x;
int y;
char face = 'n';//'n', 's', 'e', 'w'
};
void move(mod m) {
switch (m.face) {
case 'n':
if (map[m.y - 1][m.x] == '*') {
m.face = 'e';
} else {
m.y++;
}
break;
case 's':
if (map[m.y + 1][m.x] == '*') {
m.face = 'w';
} else {
m.y--;
}
break;
case 'e':
if (map[m.y][m.x + 1] == '*') {
m.face = 's';
} else {
m.x++;
}
break;
case 'w':
if (map[m.y][m.x - 1] == '*') {
m.face = 'n';
} else {
m.x--;
}
break;
}
}
// 牛 和 约翰
mod niu, john;
int main() {
// 将地图一圈设为障碍物方便计算
for (int i = 0; i < 12; i++) {
map[i][0] = '*';
map[i][11] = '*';
map[0][i] = '*';
map[11][i] = '*';
}
// 输入
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cin >> map[i][j];
if (map[i][j] == 'C') {
niu.x = j;
niu.y = i;
} else if (map[i][j] == 'F') {
john.x = j;
john.y = i;
}
}
}
// 记录次数
int time = 0;
//寻找 算法
while (niu.x != john.x && niu.y != john.y) {
move(niu);
move(john);
time++;
if (time > 160000) {
cout << "找不到" << 0;
return 0;
}
}
cout << time;
return 0;
}
样例的结果是0... 循环次数直接大于160000 还挺快的hhh