#include<bits/stdc++.h>
using namespace std;
char m[12][12];
int f[3],c[3],s1,s2;
void move(int x,int y,int mi,int h){
if (mi==0){
if (m[x-1][y]=='*') if (h==0) f[0]=1; else c[0]=1;
else if (h==0) {f[1]--;s1++;} else{ c[1]--;s2++;}
}else if (mi==1){
if (m[x][y+1]=='*') if (h==0) f[0]=2; else c[0]=2;
else if (h==0) {f[2]++;s1++;} else { c[2]++;s2++;}
}else if (mi==2){
if (m[x+1][y]=='*') if (h==0) f[0]=3; else c[0]=3;
else if (h==0) {f[1]++;s1++;} else {c[1]++;s2++;}
}else{
if (m[x][y-1]=='*') if (h==0) f[0]=0; else c[0]=0;
else if (h==0) {f[2]--;s1++;} else {c[2]--;s2++;}
}
}
int main()
{int ans;
for(int i=0;i<12;i++)
{m[i][0]='*',m[i][11]='*',m[0][i]='*',m[11][i]='*';
}
for(int i=1;i<11;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(1){
if (f[1]==c[1]&&f[2]==c[2]) break;
if(s1>400&&s2>400){
ans=0;break;}
move(f[1],f[2],f[0],0);
move(c[1],c[2],c[0],1);
ans++;
}
cout<<ans;
return 0;
}
第一个问题为什么人和牛步数超过400就是不会相遇,我是真不理解,10*10=100,是什么意思。 第二个问题还有,特征值怎么搞出来的,这个特征值设为 farmer.x+farmer.y∗10+cow.x∗100+cow.y∗1000+farmer.facing∗10000+cow.facing∗40000