C语言
#include<stdio.h>
const int in=1<<20;//时间很大就认为追击不到。
int main()
{int i=0,j=0,k1=0,k2=0,fy=0,fx=0,cx=0,cy=0,time=0;
int direction[4][2]={{0,-1},{1,0},{0,1},{-1,0}};///定义方向数组 。
char map[100][100];//存地图。
for(i=0;i<10;i++)//读入地图并标记F和C的初始位置。
{
for(j=0;j<10;j++)
{
scanf("%c",&map[i][j]);
if(map[i][j]=='F')
{
fy=i;
fx=j;
}
else if(map[i][j]=='C')
{
cx=j;
cy=i;
}
}
getchar();
}
while(time<=in)
{
if(cx==fx&&fy==cy){break;}//追击到了,退出循环
time++;
cx+=direction[k1][0];//向前走
cy+=direction[k1][1];
if(cx<0||cy>=10||cy<0||cx>=10||map[cy][cx]=='*')//如果碰到障碍物或出界。
{
cy-=direction[k1][1];
cx-=direction[k1][0];
if(k1<3){k1++;}//转弯。
else{k1=0;}
}
fx+=direction[k2][0];//往前
fy+=direction[k2][1];
if(map[fy][fx]=='*'||fy>=10||fx<0||fy<0||fx>=10)//如果碰到障碍物或出界。
{
fy-=direction[k2][1];
fx-=direction[k2][0];
if(k2==3){k2=0;}//转弯。
else{k2++;}
}
}
if(time>=in){printf("0");}
else{printf("%d",time);}
return 0;
}8
``