hncu 1101(bfs)

来源:互联网 发布:ar.drone编程 编辑:程序博客网 时间:2024/06/08 06:43
#include<iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;int bx, by, ex, ey;bool visit[8][8];int dir[8][2]={-1,-2,-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2}; struct node{int x, y, step;};bool right(int x, int y){if(x<0 || y<0 || x>=8 || y>=8)     return false;      if(visit[x][y])  return false;      return true;  }int bfs(){node now, next;now.x=bx; now.y=by; now.step=0;queue<node> q;q.push(now);visit[now.x][now.y]=1;while(!q.empty()){now = q.front();q.pop();if(now.x==ex&&now.y==ey){return now.step;}for(int i = 0; i < 8; i++){next.x = now.x+dir[i][0];next.y = now.y+dir[i][1];next.step = now.step+1;if(right(next.x,next.y)){q.push(next);visit[next.x][next.y]=true;}}}}int main(){char a[2], b[2];while(~scanf("%s %s", a, b)){bx =a[0]-'a';by = a[1]-'1';ex = b[0]-'a';ey = b[1]-'1';memset(visit,0, sizeof(visit));        printf("To get from %s to %s takes %d knight moves.\n",a,b,bfs());}return 0;}


 

0 0
原创粉丝点击