码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2243 || HDU 1372:Knight Moves(BFS)

时间:2014-07-17 19:05:30      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:os   io   for   代码   re   c   

简单搜索

直接代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<queue>
using namespace std;
char a,c;
int e,f;
int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1};
int qq[9][9];
struct node
{
    int q,w,num;
};
node b,d;
queue<node> q;
void bfs()
{
    int i;
    while(!q.empty())
    {
        node temp=q.front();
        q.pop();
        if(temp.q==d.q&&temp.w==d.w)
        {
            printf("To get from %c%d to %c%d takes %d knight moves.\n",a,b.w,c,d.w,temp.num);
            return ;
        }
        else
        {
            for(i=0;i<8;i++)
            {
                int xx=temp.q+dx[i];
                int yy=temp.w+dy[i];
                if(!qq[xx][yy]&&xx>0&&xx<=8&&yy<=8&&yy>0)
                {
                    qq[xx][yy]=1;
                    node next;
                    next.q=xx;
                    next.w=yy;
                    next.num=temp.num+1;
                    q.push(next);
                }
            }
        }
    }
}

int main()
{
    while(~scanf("%c%d %c%d",&a,&b.w,&c,&d.w))
    {
        getchar();
        while(!q.empty())  q.pop();
        memset(qq,0,sizeof(qq));
        b.q=a-'a'+1;
        d.q=c-'a'+1;
        b.num=0;
        qq[b.q][b.w]=1;
        q.push(b);
        bfs();
    }
    return 0;
}


POJ 2243 || HDU 1372:Knight Moves(BFS),布布扣,bubuko.com

POJ 2243 || HDU 1372:Knight Moves(BFS)

标签:os   io   for   代码   re   c   

原文地址:http://blog.csdn.net/asuxiexie/article/details/37911589

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!