B-POJ-3278 Catch That Cow

简介: Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately.

Description
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

  • Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
  • Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long
does it take for Farmer John to retrieve it?

Input
Line 1: Two space-separated integers: N and K

Output
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input
5 17

Sample Output
4

Hint
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.

经典的BFS题目,每次3种选择

#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
int flag[100001];
void BFS(int N,int K){
    queue<int> a;
    int b;
    a.push(N);
    while(!a.empty()){
        b=a.front();
        a.pop();
        if(b==K){
            printf("%d",flag[b]);
            return;
        }
        if(b+1<=100000&&flag[b+1]==0){
            flag[b+1]=flag[b]+1;
            a.push(b+1);
        }
        if(b-1>=0&&flag[b-1]==0){
            flag[b-1]=flag[b]+1;
            a.push(b-1);
        }
        if(2*b<=100000&&flag[2*b]==0){
            flag[2*b]=flag[b]+1;
            a.push(2*b);
        }
        if(b-1<0||2*b>100000||b+1>100000)
            continue;
        //开始将pop放在这里导致进死循环。。
    }
    return;
}
int main(){
    int N,K;
    memset(flag,0,sizeof(flag));
    scanf("%d%d",&N,&K);
    if(N<K)
        BFS(N,K);
    else
        printf("%d",N-K);
    return 0;
}

题目很简单,但开始没注意pop的位置,找了一晚上。。

目录
相关文章
|
Unix Shell Linux
客户端如何查找FTP服务器的用户名和密码
客户端如何查找FTP服务器的用户名和密码
|
存储 安全 Linux
s3fs挂载S3对象桶
s3fs(Simple Storage Service File System)是一个基于FUSE(Filesystem in Userspace)的文件系统,它允许将S3(Simple Storage Service)或其他兼容S3 API的对象存储服务挂载到本地文件系统中,从而能够像访问本地磁盘一样访问远程对象存储。以下是通过s3fs挂载OBS(Object Storage Service,对象存储服务,这里以华为云OBS为例)对象桶的基本步骤: ### 一、环境准备 1. **安装s3fs**: - 对于CentOS系统,可以使用yum安装s3fs-fuse: ```
3033 7
|
监控 安全 网络安全
你会爱上这三款公司电脑监控软件
探索高效团队管理的电脑监控软件,推荐WorkWin、Hubstaff和Veriato。WorkWin提供实时员工监控、USB管理、远程控制及权限控制,确保生产力和安全。Hubstaff聚焦时间追踪和活动记录,通过屏幕截图确保工作执行。Veriato则细致到键盘记录和邮件监控,全面了解用户活动。这三款工具将提升工作效率,保障信息安全。[了解更多](https://www.bilibili.com/read/cv35378263)
358 1
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
433 7
|
Java PHP 数据安全/隐私保护
php base64_decode与java base64解密结果不匹配问题
php base64_decode与java base64解密结果不匹配问题
503 0
|
安全 网络安全 网络虚拟化
Cisco-三层交换机实现VLAN间路由
Cisco-三层交换机实现VLAN间路由
506 0
|
设计模式 算法 数据库连接
后端开发中的设计模式应用与实践
在软件开发的广袤天地中,设计模式如同夜空中最亮的星辰,引领着开发者们穿越复杂系统的迷雾。本文旨在通过深入浅出的方式,不仅探讨设计模式的理论精髓,揭示它们在后端架构中的重要性,还将以生动的实践案例,展示如何在实际项目中巧妙运用这些模式。我们邀请您一同踏上这场编程之旅,探索如何借助设计模式的力量,让后端系统更加健壮、灵活且易于维护,共同揭开后端技术神秘面纱的一角。
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
420 0
|
定位技术 数据处理
适用于UE的wgs84坐标系快捷拾取方法
UE开发中,为了精确的地理定位,常用到WGS84坐标系。而常规地图软件的拾取坐标不适用于UE,因此掌握WGS84坐标转换至关重要。与大家分享一个两步快速拾取WGS84坐标的方法~
|
安全 Java 数据安全/隐私保护
快速掌握 WinRAR:详细安装与使用指南
**WinRAR 摘要** WinRAR 是全能压缩工具,支持多格式,如 RAR, ZIP 等。要下载,访问 &lt;https://www.win-rar.com&gt; 选择适合的操作系统和语言。安装时,定制路径和选项,如桌面快捷方式。启动后,通过“选项”-&gt;“设置”配置首选项。使用上,能新建压缩文件,设定格式和选项,也可解压文件到指定目录。遇到问题,如文件损坏,可利用 WinRAR 的修复功能。本文提供下载、安装和使用指导,确保用户顺利操作。

热门文章

最新文章

下一篇
开通oss服务