王道机试指南 例题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 辽宁

相关推荐

Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 18:05
哈哈哈哈哈感觉朋友找工作的已经疯掉了,直接上图
码农索隆:真老板娘:“我嘞个去,这不我当年的套路吗
点赞 评论 收藏
分享
评论
点赞
7
分享

创作者周榜

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