王道机试指南 例题9.1 Catch That Cow

题目:

题目大意:

算法及原理:

代码:

#include <queue>
#include <iostream>
using namespace std;

struct Status{
    int n;//记录走到哪了
    int t;//记录当前时间
    Status(int n0,int t0):n(n0),t(t0) {};
};

int BFS(int n,int k){
    Status st(n,0);//初始状态位于n处,时间为0
    queue<Status> q;
    q.push(st);//初始状态入队
    while(q.empty()==0){
        Status tmp=q.front();//取队头元素
        if(tmp.n==k)//走到k处则结束循环
            return tmp.t;
        q.pop();//队头元素出队
        for(int i=0;i<3;i++){//三种可能的状态依次入队
            Status ns(tmp.n,tmp.t+1);
            if(i==0) ns.n--;
            else if(i==1) ns.n++;
            else ns.n=ns.n*2;
            q.push(ns);
        }
    }
    return -1;
}

int main(){
    int n,k;
    while(cin>>n>>k){
        int minu=BFS(n,k);
        cout<<minu<<endl;
    }

    return 0;
}

运行结果:

全部评论
谢谢uu的分享
1 回复 分享
发布于 2023-02-13 12:48 湖北
给楼主扣一波666
1 回复 分享
发布于 2023-02-13 12:39 辽宁

相关推荐

码农索隆:想看offer细节
点赞 评论 收藏
分享
牛客84809583...:举报了
点赞 评论 收藏
分享
怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
评论
点赞
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务