zoukankan      html  css  js  c++  java
  • POJ 3278 Catch That Cow (BFS)

    题目链接:Catch That Cow


    解析:两个数n和k,三种操作:+1、-1、*2,问n最少经过多少次操作能和k相等。

    最简单的bfs模板了,注意

    +1的条件:x+1 <= k

    -1的条件:x-1 >= 0

    *2的条件:x <= k && 2*x <= 100000




    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <cstring>
    using namespace std;
    
    struct Node { int n, step; };
    
    bool vis[100005];
    int bfs(int n, int k){
        memset(vis, false, sizeof(vis));
        queue<Node> Q;
        Q.push(Node{n, 0});
        while(!Q.empty()){
            Node now = Q.front();
            Q.pop();
            if(now.n == k) return now.step;
            if(now.n+1 <= k && !vis[now.n+1]){
                vis[now.n+1] = true;
                Q.push(Node{now.n+1, now.step+1});
            }
            if(now.n-1 >= 0 && !vis[now.n-1]){
                vis[now.n-1] = true;
                Q.push(Node{now.n-1, now.step+1});
            }
            if(now.n <= k && 2*now.n <= 100000 && !vis[2*now.n]){
                vis[2*now.n] = true;
                Q.push(Node{2*now.n, now.step+1});
            }
        }
        return -1;
    }
    
    int main(){
    //    freopen("in.txt", "r", stdin);
        int n, k;
        while(scanf("%d%d", &n, &k) == 2){
            printf("%d
    ", bfs(n, k));
        }
        return 0;
    }
    



  • 相关阅读:
    svg
    vuex的模块
    es6的新增方法和es5数组的一些方法
    vue的响应规则
    简单的解构赋值
    vuex的四种状态
    indexDB
    token验证
    C# 委托与事件的DEMO
    WPF MVVM 键盘按键事件绑定
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6893733.html
Copyright © 2011-2022 走看看