zoukankan      html  css  js  c++  java
  • HDOJ1372(BFS)

    大意:字母代表列,数字代表行,马走日,给出坐标求最小步数。

    分析:BFS。。。

    代码

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<string>
    #include<cstring>
    using namespace std;
    typedef pair<int,int> P;
    int next1[8][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2}};
    int num[10][10];
    int bfs(int sx,int sy,int ex,int ey)
    {
        queue<P>q;
        while(!q.empty())
            q.pop();
        q.push(P(sx,sy));
        num[sx][sy]=1;
        while(!q.empty())
        {
            P fx=q.front();
            if(fx.first==ex&&fx.second==ey)
                return num[ex][ey];
            for(int i=0;i<8;i++)
            {
                int nx=fx.first+next1[i][0],ny=fx.second+next1[i][1];
                if(nx>=1&&nx<=8&&ny>=1&&ny<=8&&!num[nx][ny])
                {
                    q.push(P(nx,ny));
                    num[nx][ny]=num[fx.first][fx.second]+1;
                }
            }
            q.pop();
        }
    }
    int main()
    {
        string ch1,ch2;
        int a,b,c,d;
        while(cin>>ch1>>ch2)//cin遇空格结束输入。。。。。。
        {
            memset(num,0,sizeof(num));
            b=ch1[0]-'a'+1;a=ch1[1]-'0';d=ch2[0]-'a'+1;c=ch2[1]-'0';
            cout<<"To get from "<<ch1<<" to "<<ch2<<" takes "<<bfs(a,b,c,d)-1<<" knight moves."<<endl;
        }
        return 0;
    }
    


  • 相关阅读:
    Linux小命了(6)cd
    Linux小命令(5)mkdir
    性能测试(1)-开篇杂谈
    Linux小命令(4)ls
    Linux小命令(3)cat
    Linux小命令(2)man
    机器学习-学习方法
    flask-cache
    mysql 常用时间函数
    发现变化,拥抱变化
  • 原文地址:https://www.cnblogs.com/nickqiao/p/7583407.html
Copyright © 2011-2022 走看看