rt.
WA 在点 4,本机测试(第 4 个点的数据)对的,交上去错了。
记录。
代码:
#include <bits/stdc++.h>
using namespace std;
char m[12][12];
int f[3], c[3], ans;
bool zt[160005];
void M(int x, int y, int mi, bool h) {
if (mi == 0) {
if (m[x - 1][y] == '*') {
!h ? f[0] = 1 : c[0] = 1;
} else {
!h ? f[1]-- : c[1]--;
}
} else if (mi == 1) {
if (m[x][y + 1] == '*') {
if (h == 0) {
f[0] = 2;
} else {
c[0] = 2;
}
} else {
!h ? f[2]++ : c[2]++;
}
} else if (mi == 2) {
if (m[x + 1][y] == '*') {
if (h == 0) {
f[0] = 3;
} else {
c[0] = 3;
}
} else {
!h ? f[1]++ : c[1]++;
}
} else {
if (m[x][y - 1] == '*') {
if (h == 0) {
f[0] = 0;
} else {
c[0] = 0;
}
} else {
!h ? f[2]-- : c[2]--;
}
}
}
int main() {
for (int i = 0; i <= 11; i++) {
m[i][0] = '*';
m[i][11] = '*';
}
for (int i = 1; i <= 11; i++) {
m[0][i] = '*';
m[11][i] = '*';
}
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
cin >> m[i][j];
if (m[i][j] == 'F') {
f[1] = i, f[2] = j;
}
if (m[i][j] == 'C') {
c[1] = i, c[2] = j;
}
}
}
while (f[1] != c[1] || f[2] != c[2]) {
int tmp = f[1] + f[2] * 10 + c[1] * 100 + c[2] * 1000 + f[0] * 10000 + c[0] * 40000;
if (zt[tmp]) {
cout << 0;
return 0;
}
zt[tmp] = 1;
M(f[1], f[2], f[0], 0);
M(c[1], c[2], c[0], 1);
ans++;
}
cout << ans;
return 0;
}