• POJ 3278: Catch That Cow


    题意:农夫在n号点,牛在k号点,农夫每次可以左右移动一格或者跳到2x位置,求农夫最少移动几次抓到牛。

    分析:显然,如果n>=k,step=n-k。对于n<k的情况,对三个方向广搜即可。(没事水母牛题可还行

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int n,k,step[100005];
    bool vis[100005];
    queue<int>q;
    void init(){
        cin>>n>>k;
    }
    int bfs(int n,int k){
        q.push(n);
        vis[n]=true;
        while(!q.empty()){
            int head=q.front(),next;
            q.pop();
            range(i,0,2){
                if(!i)next=head-1;
                else if(i==1)next=head+1;
                else next=head<<1;
                if(next>100005||next<0)continue;
                if(!vis[next]){
                    q.push(next);
                    step[next]=step[head]+1;
                    vis[next]=true;
                }
                if(next==k)return step[next];
            }
        }
    }
    void solve(){
        cout<<(n>=k?n-k:bfs(n,k))<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    结对编程——四则运算
    需求分析
    结对编程
    调查问卷的心得体会
    软件工程课初步目标
    软件工程课程建议
    结对编程--fault,error,failure
    结对编程--四则运算
    需求分析
    结对编程
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9323458.html
Copyright © 2020-2023  润新知