zoukankan      html  css  js  c++  java
  • F: Horse Pro 马走棋盘 BFS

    F: Horse Pro

    豆豆也已经开始学着玩象棋了,现在豆豆已经搞清楚马的走法了,但是豆豆不能确定能否在 100

    步以内从一个点到达另一个点(假设棋盘无限大)。

    Input

    第一行输入两个整数 x1,y1

    表示当前马所在的位置。

    第二行输入两个整数 x2,y2

    表示豆豆想把马走在的位置。

    10000x1,x2,y1,y210000

     

    Output

    如果能够在100步以内(包括100步)从(x1,y1)

    到达 (x2,y2) 则输出到达所需要的最小步数,否则输出 1

     

    Sample Input

    1 1
    2 3

    Sample Output

    1


    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<math.h>
    #include<stdio.h>
    #include<string.h>
    #include<map>
    #include<queue>
    #include<utility>
    #define ll long long
    using namespace std;
    int dir[8][2] = {1, 2, 2, 1, 1, -2, 2, -1, -1, 2, -2, 1, -1, -2, -2, -1};
    int sx,sy,ex,ey;
    struct node 
    {
        int x;
        int y;
        int dep;
    };
    map<pair<int,int>,int>m;//标记点是否走过,因为坐标有负数,不能用数组
    /*
    一开始是想用结构体的,map<node,int>m会编译报错,因为map是内部有序的
    如果使用结构体的话,应该先重在小于号 > 使结构体保持有序
    */
    int bfs()
    {
        queue<node>p;
        node temp;
        temp.x=sx;
        temp.y=sy;
        temp.dep=0;
        p.push(temp);
        while(!p.empty())
        {
            node now=p.front();
            p.pop();
            if(now.dep>100)
                return -1;
            if(now.x==ex&&now.y==ey)
                return now.dep;
            for(int i=0;i<8;i++)
            {
                node tmp=now;
                tmp.x=tmp.x+dir[i][0];
                tmp.y=tmp.y+dir[i][1];
                pair<int,int>d=make_pair(tmp.x,tmp.y);
                if(m[d])//标记点
                    continue;
                m[d]=1;
                tmp.dep++;
                p.push(tmp);
            }
    
        }
    }
    int main()
    {
        cin>>sx>>sy>>ex>>ey;
        int ans=bfs();
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    DOM--3 DOM核心和DOM2 HTML(3)
    js-其他
    DOM--3 DOM核心和DOM2 HTML(2)
    DOM--3 DOM核心和DOM2 HTML(1)
    插入视频(youtube)
    DOM--2 创建可重用的对象
    safari的坑
    DOM--1 遵循最佳实践
    mvc-5视图和模版
    mvc-4控制器和状态(2)
  • 原文地址:https://www.cnblogs.com/-citywall123/p/11930825.html
Copyright © 2011-2022 走看看