• POJ-3278-Catch That Cow


    链接:https://vjudge.net/problem/POJ-3278

    题意:

    给定n,k。有三种操作n-1,n+1,n*2。

    找到从n到k的最少步骤。

    思路:

    BFS

    代码:

    #include <iostream>
    #include <queue>
    using namespace std;
    const int MAXN = 1e5+10;
    struct Node
    {
        int _x;
        int _step;
        Node(int x,int step)
        {
            _x = x;
            _step = step;
        }
    };
    int vis[MAXN];
    
    int main()
    {
        int n,k;
        scanf("%d%d",&n,&k);
        queue<Node> Q;
        Q.push(Node(n,0));
        vis[n] = 1;
        while (!Q.empty())
        {
            int x = Q.front()._x;
            int step = Q.front()._step;
            if (x == k)
                break;
            if (x-1 >= 0&&x-1<MAXN&&vis[x-1] == 0)
            {
                Q.push(Node(x-1,step+1));
                vis[x-1] = 1;
            }
            if (x+1 >= 0&&x+1<MAXN&&vis[x+1] == 0)
            {
                Q.push(Node(x+1,step+1));
                vis[x+1] = 1;
            }
            if (x*2 >= 0&&x*2<MAXN&&vis[x*2] == 0)
            {
                Q.push(Node(x*2,step+1));
                vis[x*2] = 1;
            }
            Q.pop();
        }
        printf("%d
    ",Q.front()._step);
    
        return 0;
    }
    

      

  • 相关阅读:
    Tyvj 1729 文艺平衡树
    送花
    Tyvj 1728 普通平衡树
    [NOI2004]郁闷的出纳员
    [HNOI2004]宠物收养所
    [HNOI2002]营业额统计
    [NOIP2012] 借教室
    无聊的数列
    忠诚
    XOR的艺术
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10266679.html
Copyright © 2020-2023  润新知