• HDU 1372 Knight Moves


    以前敲过pascal的,一直感觉很麻烦……

    #include<iostream>  
    #include<queue>  
    using namespace std;  
    struct node  
    {  
        int c,r,lev;  
    }front,tmp,start,end;  
    queue <node>Q;  
    int a[]={0,-2,-2,-1,-1,1,1,2,2};  
    int b[]={0,-1,1,-2,2,-2,2,-1,1};  
    int bfs(node s,node e)  
    {  
        int i;  
        while(!Q.empty())  
        Q.pop();  
        if(e.c==s.c&&e.r==s.r)return 0;  
        Q.push(s);  
        while(!Q.empty())  
        {  
            front=Q.front();  
            Q.pop();  
            for(i=1;i<=8;i++)  
            {  
                tmp.c=b[i]+front.c;  
                tmp.r=a[i]+front.r;  
                tmp.lev=front.lev+1;  
                if(e.c==tmp.c&&e.r==tmp.r)  return tmp.lev;  
                if(tmp.c>=1&&tmp.c<=8&&tmp.r>=1&&tmp.r<=8)  
                Q.push(tmp);  
            }  
         }  
    }  
    int main()  
    {  
        char s[3],e[3];  
        while(scanf("%s%s",s,e)!=EOF)  
        {  
            start.c=s[0]-'a'+1;  
            start.r=s[1]-'0';  
            start.lev=0;  
            end.c=e[0]-'a'+1;  
            end.r=e[1]-'0';  
            printf("To get from %s to %s takes %d knight moves.
    ",s,e,bfs(start,end));  
        }  
        return 0;  
    }  
  • 相关阅读:
    HTML 图片文字滚动
    Request.QueryString的用法
    细线表格的制作
    photoshop的小小快捷键
    制作首页
    css
    编写BLL层
    完成新闻表操作类
    编写剩下的存储过程
    重构SQLHelper2
  • 原文地址:https://www.cnblogs.com/forever97/p/3541289.html
Copyright © 2020-2023  润新知