POJ 3278 BFS + queue
时间:2022-07-24
本文章向大家介绍POJ 3278 BFS + queue,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
农夫知道一头牛的位置,想要抓住它。农夫和牛都于数轴上,农夫起始位于点N(0<=N<=100000) ,牛位于点K(0<=K<=100000) 。农夫有两种移动方式: 1、从X移动到X-1或X+1 ,每次移动花费一分钟; 2、从X移动到2*X ,每次移动花费一分钟; 假设牛没有意识到农夫的行动,站在原地不动。最少要花多少时间才能抓住牛? Input 一行:以空格分隔的两个字母: N和 K Output 一行: 农夫抓住牛需要的最少时间。 Sample Input 5 17 Sample Output 4 Hint 农夫使用最短时间抓住牛的方案如下: 5-10-9-18-17, 需要4分钟.
#include<bits/stdc++.h>
using namespace std;
#define N 100010
int step[N],vis[N];
queue<int>q;
int bfs(int n,int k){
int now,next;
step[n]=0;
vis[n]=1;
q.push(n);
while(!q.empty()){
now=q.front();
q.pop();
for(int i=0;i<3;i++){
if(i==0) next=now-1;
else if(i==1) next=now+1;
else if(i==2) next=now*2;
if(next<0||next>N) continue;
if(!vis[next]){
vis[next]=1;
q.push(next);
step[next]=step[now]+1;
}
if(next==k) return step[next];
}
}
}
int main(){
int n,k;
scanf("%d%d",&n,&k);
if(n>=k) printf("%dn",n-k);
else printf("%dn",bfs(n,k));
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用云开发快速构建最美AI毕业照小程序
- 13-2 vi-启动和退出
- Java中四种引用类型:强引用,软引用,弱引用,虚引用
- docker-compose搭建redis集群之哨兵模式
- docker-compose搭建redis集群之主从复制
- c/c++补完计划(七): 哨兵节点
- ASP.NET Core 奇技淫巧之接口代理转发
- SpringBoot 通过注解的方式整合 Mybatis + PageHelper 分页显示
- 将BX中的数以二进制形式在屏幕上显示出来。
- String及StringTable(二):java中的StringTable
- 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符“A”的个数,并将结果显示在屏幕上。
- Docker容器ElasticSearch-Head创建索引无响应406
- springboot监控&springboot配置https
- 面试中最长常问到的 HashMap,你都知道多少?
- spring security 使用自定义AuthenticationFailureHandler无法跳转failureUrl