#include<bits/stdc++.h>
using namespace std;
int m[15][15]={0},dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
bool mark[11][11][4][11][11][4]={0};
//当人和牛两个分别以相同角度走过一个位置时其实就死循环了
struct shiti{
int x;//人和牛有很多要素可以用结构体去存
int y;
int f;//0北,1东,2南,3西;
}cow,farmer;
void move(){//运动先判断前方有没有障碍,如果有就改变朝向
//判断前方是不是障碍
int fx=farmer.x+dx[farmer.f],fy=farmer.y+dy[farmer.f];
int cx=cow.x+dx[cow.f],cy=cow.y+dy[cow.f];
if(m[fx][fy]){
farmer.x=fx;
farmer.y=fy;
}
else farmer.f=(farmer.f+1)%4;
if(m[cx][cy]){
cow.x=cx;
cow.y=cy;
}
else cow.f=(cow.f+1)%4;
}
int main(){
int time=0;
char tmp;
for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
cin>>tmp;
if(tmp=='*') continue;
m[i][j]=1;
if(tmp=='C'){
cow.x=i;
cow.y=j;
cow.f=0;
}
if(tmp=='F'){
farmer.x=i;
farmer.y=j;
farmer.f=0;
}
}
}
while(farmer.x!=cow.x||farmer.y!=cow.y){
time++;
if(mark[farmer.x][farmer.y][farmer.f][cow.x][cow.y][cow.f]==1){
cout<<0;
return 0;}
mark[farmer.x][farmer.y][farmer.f][cow.x][cow.y][cow.f]=1;
move();
}
cout<<time;
return 0;
}
1518
最新推荐文章于 2024-10-31 19:07:52 发布