P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two求调
#include<bits/stdc++.h>
using namespace std;
int x,y,z,a,b,c;
char mapp[15][15];
int dx[5]={-1, 0, 1, 0};
int dy[5]={ 0, 1, 0,-1};
int main() {
for(int i=0;i<=10+1;i++)mapp[0][i]='*';
for(int i=0;i<=10+1;i++)mapp[11][i]='*';
for(int i=0;i<=10+1;i++)mapp[i][0]='*';
for(int i=0;i<=10+1;i++)mapp[i][11]='*';
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
cin>>mapp[i][j];
if(mapp[i][j]=='F'){
x=i;
y=j;
}
if(mapp[i][j]=='C'){
a=i;
b=j;
}
}
}
int i=0;
while(x!=a&&y!=b){
i++;
if(mapp[x+dx[z]][y+dy[z]]=='*'){
z=(z+1)%4;
}
else{
x+=dx[z];
y+=dy[z];
}
if(mapp[a+dx[c]][b+dy[c]]=='*'){
c=(c+1)%4;
}
else{
a+=dx[c];
b+=dy[c];
}
if(i>10000000){
cout<<0<<'\n';
return 0;
}
}
cout<<i<<'\n';
return 0;
}