求助orz
思路是获取两个的初始坐标,然后用方位表控制位置
#include <bits/stdc++.h>
using namespace std;
int dx[5] = {0, 0, +1, 0, -1}, dy[5] = {0, +1, 0, -1, 0}; // 上右下左
int d = 1; // 初始方向向上
int xc, yc, xf, yf, t;
char map0[11][11];
int main() {
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cin >> map0[i][j];
if (map0[i][j] == 'C') {
xc = i;
yc = j;
}
if (map0[i][j] == 'F') {
xf = i;
yf = j;
}
}
}
while (1) {
if (d > 4) {
d = 1;
}
int nxc = xc + dx[d]; // 下一格
int nyc = yc + dy[d]; // 下一格
int nxf = xf + dx[d]; // 下一格
int nyf = yf + dy[d]; // 下一格
bool flagc = map0[nxc][nyc] == '*' || nxc > 10 || nxc < 1 || nyc > 10 ||
nyc < 1; // 牛没路走
bool flagf = map0[nxf][nyf] == '*' || nxf > 10 || nxf < 1 || nyf > 10 ||
nyf < 1; // 人没路走
if (flagc || flagf) { // 说明二者至少一个没路走了
d++;
} else {
xc = nxc;
yc = nyc;
xf = nxf;
yf = nyf;
}
t++;
if (xc == xf && yc == yf) {
break;
}
}
printf("%d", t);
return 0;
}