BFS:一维坐标的移动

简介: BFS:一维坐标的移动

问题描述


在一个长度为 n 的坐标轴上,蒜头君想从 A 点 移动到 B 点。他的移动规则如下:


向前一步,坐标增加 1。\n向后一步,坐标减少 1。\n跳跃一步,使得坐标乘 2。


蒜头君不能移动到坐标小于 0 或大于 n 的位置。蒜头想知道从 A 点移动到 B 点的最少步数是多少,你能帮他计算出来么?


输入格式\n第一行输入 n, m 表示迷宫大小。(1≤n,m≤100)\n接下来输入 n 行字符串表示迷宫,每个字符串长度为 m。(地图保证有且仅有一个终点,一个起始点)


输出格式


第一行输入三个整数 n,A,B,分别代表坐标轴长度,起始点坐标,终点坐标。(50000≤A,B≤n≤5000)


样例输入


10 2 7


样例输出


3

#include <iostream>
#include <queue>
using namespace std;
int n,A,B;       //n坐标长度,A起始坐标,B终点坐标 
bool c[5005];
struct node{
  int x;
  int t;
  node(int xx,int tt){    
    x=xx;
    t=tt;
  }
};
bool in(int x){
  return x>=0 && x<=n;
}
queue<node> q; 
int main(){
  cin>>n>>A>>B;
  q.push(node(A,0));  
  c[A]=true;
  while(!q.empty()){
    node a=q.front();
    q.pop();
    int xx=a.x;
    int tt=a.t;
    if(xx==B){
      cout<<tt;
      break;
    }
    if(in(xx-1) && !c[xx-1]){
      c[xx-1]=1;
      q.push(node(xx-1,tt+1));
    }
    if(in(xx+1) && !c[xx+1]){
      c[xx+1]=1;
      q.push(node(xx+1,tt+1));
    }
    if(in(xx*2) && !c[xx*2]){
      c[xx*2]=1;
      q.push(node(xx*2,tt+1));
    }
  }
  return 0;
} 
相关文章
|
12月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
228 2
|
算法 C语言
C语言——最大公因数和最小公倍数
C语言——最大公因数和最小公倍数
719 0
|
存储 算法 Java
【DFS(深度优先搜索)详解】看这一篇就够啦
本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
9313 19
【DFS(深度优先搜索)详解】看这一篇就够啦
|
存储
数据结构-树的介绍、树的定义和基本术语
树是一种非线性的数据结构,是以分支关系定义的层次结构,比如人类社会中的族谱、及各种机制、组织的关系都可以用树形象的表示。重点学习二叉树的存储和相关操作,还要讨论树、森林、二叉树的转换关系。
350 0
|
存储 设计模式 安全
探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道
备忘录模式是一种行为设计模式,允许在不破坏对象封装性的情况下保存和恢复对象的内部状态。该模式通过创建备忘录对象来存储发起人的状态信息,发起人可根据需要创建和恢复备忘录。管理者则负责保存和管理备忘录,但无法访问其内容。备忘录模式简化了状态管理,支持撤销操作和历史记录功能,提高了系统的灵活性和可用性。在实际应用中,备忘录模式常用于文本编辑器、游戏和数据库事务处理等场景,确保对象状态的安全恢复和有效管理。通过备忘录模式,开发人员可以更好地控制对象状态的变化,提升软件系统的健壮性和用户体验。
326 1
探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道
|
存储 算法
有向图和无向图的表示方式(邻接矩阵,邻接表)
有向图和无向图的表示方式(邻接矩阵,邻接表)
2226 0
|
存储 机器学习/深度学习 安全
阿里云服务器价格参考,2000元预算可购买的云服务器配置及价格
2000元左右预算可以买到哪些配置的阿里云服务器?目前阿里云活动中价格在3000元左右的云服务器有22款,其中经济型e实例3款,通用算力型u1实例9款,计算型c7实例1款,通用型g7实例1款,内存型r7实例1款,倚天云服务器6款,本文将为您解读3000元预算目前在阿里云的活动中可购买到的阿里云服务器配置及具体价格。
|
JSON API 数据格式
轻松掌握!作为产品经理,手把手教你使用API接口获取拼多多商品详情
拼多多作为中国最大的电商平台之一,拥有海量的商品信息和用户数据。为了方便开发者获取这些数据,拼多多开放平台提供了API接口。通过这些接口,我们可以获取到商品的标题、描述、图片、价格等详细信息。本文将以产品经理的身份,为您详细介绍如何使用API接口获取拼多多商品详情。
|
XML JavaScript 小程序
element-ui下拉菜单组件Dropdown
<div id='app' style="margin:50px;"> <!-- 鼠标滑过显示下拉列表 这里设置了触发的方式,注意触发方式不能使用’:’绑定,以及绑定了触发选项时的方法 --> <el-dropdown trigger="hover" @command="handleCommand" > <span class="el-dropdown-link el-input__inner" style="display:block;width:200px;"> <!-- 没有选项的时候,默认显示的
564 0
|
JavaScript 前端开发 开发工具
Vue 项目利用 HBuilderX 打包 APP 流程
Vue 项目利用 HBuilderX 打包 APP 流程
1852 3