第一次手写bfs还1Y了,感觉很棒,虽然说这道题真水。
AC代码:
#include<iostream>
#include<queue>
using namespace std;
int to[8][2]={0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1,0,-1,1};
int r1,c1,r2,c2,r3,c3;
int vis[10][10];
struct node
{
int r;
int c;
int ans=0;
};
int bfs()
{
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
vis[i][j]=0;
vis[r3][c3]=1;
queue<node>q;
node a,temp;
a.r=r1;
a.c=c1;
q.push(a);
while(!q.empty())
{
temp=q.front();
q.pop();
if(temp.r==r2&&temp.c==c2)
{
return temp.ans;
}
else if(vis[temp.r][temp.c]==0)
{
vis[temp.r][temp.c]++;
for(int i=0;i<8;i++)
{
if(temp.r+to[i][0]>=1&&temp.c+to[i][1]>=1&&temp.r+to[i][0]<=8&&temp.c+to[i][1]<=8)
{
a.r=temp.r+to[i][0];
a.c=temp.c+to[i][1];
a.ans=temp.ans+1;
q.push(a);
}
}
}
}
return 0;
}
int main()
{
int k=0;
while(cin>>r1>>c1>>r2>>c2>>r3>>c3)
{
k++;
cout<<"Case "<<k<<": "<<bfs()<<endl;
}
return 0;
}

313

被折叠的 条评论
为什么被折叠?



