Luogu P1518 两只塔姆沃斯牛 The Tamworth Two

    题解

  一道模拟题, 要注意每分钟可以向前移动或者转弯!!!

  转弯一定是顺时针!!!

  模拟题别读成搜索题!!!

#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;
}   

两只塔姆沃斯牛 The Tamworth Two

原文地址:https://www.cnblogs.com/wisdom-jie/p/13620477.html