UVA 439

来源:互联网 发布:万方数据库医学网 编辑:程序博客网 时间:2024/05/01 18:10
#include <stdio.h>#include <string.h>#include <stdlib.h>int d[8][2]={{1,2},{2,1},{-1,2},{-1,-2},{1,-2},{-2,-1},{-2,1},{2,-1}};int q[100];int dis[10][10];int vis[10][10];void bfs( int x, int y ){int front, rear, nx, ny, u, i, v;u = x*8+y;front = rear = 0;vis[x][y] = 1;dis[x][y] = 0;q[front++] = u;while( front > rear ){u = q[rear++];x = u /8; y = u % 8;for( i = 0; i < 8; i++ ){ nx = x + d[i][0]; ny = y + d[i][1]; if( nx>= 0 && nx < 8 &&ny >=0 && ny < 8 && !vis[nx][ny] ) { v = nx*8 + ny; q[front++] = v; vis[nx][ny] = 1; dis[nx][ny] = dis[x][y] + 1; }}}}int main(){int x1, y1, x2, y2;char s1[10], s2[10];while( scanf( "%s%s", s1, s2 ) != EOF ){x1 = s1[0]-'a'; y1 = s1[1]-'0'-1;x2 = s2[0]-'a'; y2 = s2[1]-'0'-1;memset( dis, 0, sizeof(dis) );memset( vis, 0, sizeof(vis) );bfs( x1, y1 );printf( "To get from %s to %s takes %d knight moves.\n", s1, s2, dis[x2][y2] );}return 0;}

原创粉丝点击