第一次手写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; }