题目描述
blablabla
样例
#include<bits/stdc++.h>
using namespace std;
const int N=15;
int n=10;
char a[N][N];
int fx,fy,fd;//FJ的坐标及距离
int cx,cy,cd;//COW的坐标及距离
int dx[]={-1,0,1,0};//x地址偏移量
int dy[]={0,1,0,-1};//y地址偏移量
void move(int &x,int &y,int &d)//移动
{
int nx=x+dx[d];//x地址偏移量
int ny=y+dy[d];//y地址偏移量
// if(nx<0||nx>=n||ny<0||ny>=n)//在范围内
// {
// d=(d+1)%4;//距离更新
// return;
// }
// if(a[nx][ny]=='*')//阻碍
// {
// d=(d+1)%4;//距离更新
// return;
// }
if(nx<0||nx>=n||ny<0||ny>=n||a[nx][ny]=='*')//在范围内or阻碍
{
d=(d+1)%4;//距离更新
return;
}
x=nx,y=ny;//坐标更新
}
int main()
{
// for(int i=0;i<n;i++)
// scanf("%s",a[i]);//地图
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];//地图
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(a[i][j]=='F')
fx=i,fy=j;
if(a[i][j]=='C')
cx=i,cy=j;
}
for(int i=1;i<=160000;i++)//步数,从小到大
{
if(fx==cx&&fy==cy)//抓到
{
printf("%d\n",i-1);
return 0;
}
move(fx,fy,fd);
move(cx,cy,cd);
}
cout<<"0"<<endl;//如果抓不住牛,则输出 0
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla