| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 11223 | Accepted: 6331 | 
Description
Input
Output
Sample Input
e2 e4
a1 b2
b2 c3
a1 h8
a1 h7
h8 a1
b1 c3
f6 f6
Sample Output
To get from e2 to e4 takes 2 knight moves.
To get from a1 to b2 takes 4 knight moves.
To get from b2 to c3 takes 2 knight moves.
To get from a1 to h8 takes 6 knight moves.
To get from a1 to h7 takes 5 knight moves.
To get from h8 to a1 takes 6 knight moves.
To get from b1 to c3 takes 1 knight moves.
To get from f6 to f6 takes 0 knight moves.
数组不要开的太大。。还要记得将队列清空。。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 200;
int n , m;
char color[N][N];
int vist[N][N];
int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1};
int xx;
int yy;
int ans;
struct node
{
    int x;
    int y;
    char c;
    int num;
};
queue<node>q;
node a, b;
void bfs()
{
   vist[a.x][a.y]=1;
    while( !q.empty() )
    {
        node temp = q.front();
        if( temp.x==b.x && temp.y==b.y )
        {
            printf("To get from %c%d to %c%d takes %d knight moves.\n", a.c, a.y, b.c, b.y, temp.num);
            return ;
        }
        q.pop();
        for(int i=0; i<8; i++)
        {
            xx = temp.x + dx[i];
            yy = temp.y + dy[i];
            if( xx<1 || xx>8 || yy<1 || yy>8 || vist[xx][yy])
                continue;
            node next;
            next.x = xx;
            next.y = yy;
            next.num=temp.num+1;
            vist[xx][yy]=1;
            q.push( next );
        }
    }
}
int main()
{
    int i,j;
    while(~scanf("%c%d %c%d", &a.c, &a.y, &b.c, &b.y))
    {
        getchar();
        while( !q.empty() ) q.pop();
        memset( vist, 0, sizeof(vist) );
        a.x = a.c - 'a'+1;
        b.x = b.c - 'a'+1;
        node first;
        first.x = a.x;
        first.y = a.y;
        first.num=0;
        ans = 0;
        q.push( first );
        bfs();
    }
    return 0;
}
POJ 2243 || HDU 1372:Knight Moves(BFS),布布扣,bubuko.com
POJ 2243 || HDU 1372:Knight Moves(BFS)
原文地址:http://blog.csdn.net/u013487051/article/details/37883505