#include <bits/stdc++.h>
using namespace std;
string mp[12], s;
pair<int,int> C, F;
bool st[131][131][4][4];
int f, step, i, j, x, y, dx[4]={-1, 0, 1, 0}, dy[4]={0, 1, 0, -1};
int main () {
mp[0]=mp[11]="************";
for (int i=1; i<11; i++) {cin >> s; mp[i]='*'+s+'*';}
for (int i=1; i<11; i++)
for (int j=1; j<11; j++) {
if (mp[i][j]=='C') C={i,j};
if (mp[i][j]=='F') F={i,j};
}
while (!f && !st[C.first*10+C.second][F.first*10+F.second][i][j]) {
st[C.first*10+C.second][F.first*10+F.second][i][j]=true;
x=dx[i]; y=dy[i];
if (mp[C.first+x][C.second+y]!='*') {
C.first+=x; C.second+=y;
}
else i=(i+1)%4;
x=dx[j]; y=dy[j];
if (mp[F.first+x][F.second+y]!='*') {
F.first+=x; F.second+=y;
}
else j=(j+1)%4;
step++;
if (C.first*10+C.second==F.first*10+F.second) f=step;
}
cout << f;
return 0;
}
洛谷 P1518 两只塔姆沃斯牛 / 黄题 / 模拟
于 2024-05-01 01:20:05 首次发布