zoukankan      html  css  js  c++  java
  • 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;  
    }  
  • 相关阅读:
    iOS学习-UITextField
    iOS学习-UIButton->Block
    iOS学习-UIButton
    iOS常用技术-微信下标栏
    学习进度表
    学习进度表
    读后感
    我的学习进度表
    调查问卷
    我的学习进度表
  • 原文地址:https://www.cnblogs.com/forever97/p/3541289.html
Copyright © 2011-2022 走看看