题解
一道模拟题, 要注意每分钟可以向前移动或者转弯!!!
转弯一定是顺时针!!!
模拟题别读成搜索题!!!
#include<cstdio> using namespace std; char dt[15][15]; int main() { int i,j,k,fa,co,df=1,dc=1; for(i=1;i<=10;i++) for(j=1;j<=11;j++) { scanf("%c",&dt[i][j]); if(dt[i][j]=='F'){fa=i*100+j;dt[i][j]='.';}//fa为农夫位置 if(dt[i][j]=='C'){co=i*100+j;dt[i][j]='.';}//co为两头牛位置 } for(k=1;k<=100000;k++)//k为时间 { if(df==1&&dt[fa/100-1][fa%100]=='.')fa-=100;//df为农夫方向 else if(df==2&&dt[fa/100][fa%100+1]=='.')fa+=1; else if(df==3&&dt[fa/100+1][fa%100]=='.')fa+=100; else if(df==4&&dt[fa/100][fa%100-1]=='.')fa-=1; else df+=1; if(df>4)df%=4; if(dc==1&&dt[co/100-1][co%100]=='.')co-=100;//dc为两头牛方向 else if(dc==2&&dt[co/100][co%100+1]=='.')co+=1; else if(dc==3&&dt[co/100+1][co%100]=='.')co+=100; else if(dc==4&&dt[co/100][co%100-1]=='.')co-=1; else dc+=1; if(dc>4)dc%=4; if(fa==co)//位置一样输出 { printf("%d",k); return 0; } } printf("0"); return 0; }