博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计蒜客一维坐标的移动
阅读量:6583 次
发布时间:2019-06-24

本文共 1053 字,大约阅读时间需要 3 分钟。

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

  1. 向前一步,坐标增加 11。
  2. 向后一步,坐标减少 11。
  3. 跳跃一步,使得坐标乘 22。

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

输入格式

第一行输入三个整数 nn,AA,BB,分别代表坐标轴长度,起始点坐标,终点坐标。(0 \le A, B \le n \le 50000A,Bn5000)

输出格式

输出一个整数占一行,代表蒜头要走的最少步数。

样例输入

10 2 7

样例输出

3 解析 因为只需要最短路径,考虑bfs,找出最短路即可
#include
using namespace std;queue
xx;int n,a,b;//坐标轴长度,起点,终点int record[5005];int changex[5]={
0,1,-1}; int main(){ cin>>n >>a >>b; xx.push(a); while(!xx.empty()) { int nowx=xx.front(); xx.pop(); for(int i=1;i<=3;i++) { int newx; if(i==3) { newx=nowx*2; } else newx=nowx+changex[i]; if(newx>n||newx<1) continue;//注意要先判断是否越界 if(record[newx]!=0) continue; if(newx==a) continue; record[newx]=record[nowx]+1; xx.push(newx); } } cout<
<

 

 

转载于:https://www.cnblogs.com/KyleDeng/p/9294407.html

你可能感兴趣的文章
git最最最最...常用命令
查看>>
复杂recyclerView封装库
查看>>
使用Redis构建文章投票网站(Java)
查看>>
见微知著 —— Redis 字符串内部结构源码分析
查看>>
Command './js-ant' failed to execute
查看>>
阿里云NFS NAS数据保护实战
查看>>
Spring cloud配置客户端
查看>>
产品研发项目管理软件哪个好?
查看>>
【阿里云北京峰会】一图看懂机器学习PAI如何帮助企业应用智能化升级
查看>>
ansible playbook使用总结
查看>>
Android API中文文档(111) —— MailTo
查看>>
Linux 中如何卸载已安装的软件
查看>>
thinkphp 3.2 增加每页显示条数
查看>>
oracle日常简单数据备份与还原
查看>>
我的友情链接
查看>>
黑马程序员__反射总结
查看>>
Scala学习笔记(5)-类和方法
查看>>
Quartz原理
查看>>
完全卸载oracle|oracle卸载|彻底卸载oracle
查看>>
垃圾收集基础
查看>>