1到n的最小步数

Time Limit: 1 Sec  Memory Limit: 128 MB

给你一个数n,让你求从1到n的最小步数是多少。

对于当前的数x有三种操作:

1:  x+1

2:  x-1

3:  x*2

Input

测试数据为多组,对于每组测试数据:(大约1000组)

输入一个正整数n(1 <= n <= 1000000)

Output

对于每组测试数据输入从1到n的最小步数ans

Sample Input

3
8

Sample Output

2
3 这道题就是BFS模板题,但是又有点区别,测试数据组数比较多,直接写容易超时,所以要用到预处理
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm> using namespace std;
const int maxn=1e6+;
int cnt[maxn*];
int n,t; void bfs(){
queue<int>q;
q.push();
while(!q.empty()){
int x=q.front(),xx;
if(t==maxn)
return ;
for(int i=;i<;i++){    ///进行 +1 -1 *2 3种操作
if(i==){
xx=x+;
}
else if(i==){
xx=x-;
}
else{
xx=x*;
}
if(xx<||xx>maxn||cnt[xx]||xx==)  ///判断操作后是否满足条件
continue;
cnt[xx]=cnt[x]+;  ///操作数 + 1
q.push(xx);  
t++; ///直接 搜索1e6次
}
q.pop();
}
} int main(){
bfs();
while(~scanf("%d",&n)){
printf("%d\n",cnt[n]);
}
return ;
}

												

1到n的最小步数的更多相关文章

  1. POJ 1753 Flip Game (高斯消元 枚举自由变元求最小步数)

    题目链接 题意:4*4的黑白棋,求把棋全变白或者全变黑的最小步数. 分析:以前用状态压缩做过. 和上题差不多,唯一的不同是这个终态是黑棋或者白棋, 但是只需要把给的初态做不同的两次处理就行了. 感觉现 ...

  2. yzoi2226最小步数的详细解法

    Description - 问题描述 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”.有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字. ...

  3. One Person Game(扩展欧几里德求最小步数)

    One Person Game Time Limit: 2 Seconds      Memory Limit: 65536 KB There is an interesting and simple ...

  4. Algorithm --> 棋盘中求出A到B的最小步数

    求出A到B的最小步数 给定象棋盘,以及位置A和B, 求出从A到B的最小步数 代码: #include <cstdio> #include <iostream> #include ...

  5. [leetcode]45. Jump Game II青蛙跳(跳到终点最小步数)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  6. ny58 最小步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1 ...

  7. ZOJ 3593 One Person Game(拓展欧几里得求最小步数)

    One Person Game Time Limit: 2 Seconds      Memory Limit: 65536 KB There is an interesting and simple ...

  8. 带你学习BFS最小步数模型

    最小步数模型 一.简介 最小步数模型和最短路模型的区别? 最短路模型:某一个点到另一个点的最短距离(坐标与坐标之间) 最小步数模型:不再是点(坐标),而是状态到另一个状态的转变 BFS难点所在(最短路 ...

  9. yzoi1109&&viojs1042最小步数的一点看法——回文数

    Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...

随机推荐

  1. Linux-网络管理

    网络管理 一 基本网络配置 linux操作系统,以太网卡用“eth”表示网卡:序号从零开始eth0代表到系统能够识别的第一个网卡eth1....第2个网卡 查看网卡信息 查看网卡信息 查看当前系统所连 ...

  2. [HNOI2010]城市建设

    [HNOI2010]城市建设 玄学cdq O(nlog^2n)的动态最小生成树 其实就是按照时间cdq分治+剪枝(剪掉一定出现和不可能出现的边) 处理[l,r]之间的修改以及修改之后的询问,不能确定是 ...

  3. STL初始化initializer_list

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h&g ...

  4. Alibaba Java开发手册索引规约学习笔记

    最近一段时间再看阿里巴巴 Java开发手册索引规约,写篇帖子总结一下,索引规约内容如下 为了通用,更为了避免造数据的痛苦,文中所涉及表.数据,均来自于MySQL官网提供的示例库employees,可通 ...

  5. JS的去抖、节流

    去抖(debounce) 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. //模拟一段ajax请求 function ajax(content) { console.log('aj ...

  6. Windows Server2012 R2 安装.NET Framework 3.5

    拿到手的虚拟机系统是Windows server 2012R2,本想着安装SQlserver2012轻轻松松,结果途中警告未安装.NET Framework 3.5.于是找了个.NET Framewo ...

  7. SpringMVC生命周期,SpringMVC运行流流程

    SpringMVC详细运行流程图 SpringMVC运行原理 1. 客户端请求提交到DispatcherServlet2. 由DispatcherServlet控制器查询一个或多个HandlerMap ...

  8. HBase读写的几种方式(三)flink篇

    1. HBase连接的方式概况 主要分为: 纯Java API读写HBase的方式: Spark读写HBase的方式: Flink读写HBase的方式: HBase通过Phoenix读写的方式: 第一 ...

  9. Knockoutjs 响应式计算研究

    reactive programming https://en.wikipedia.org/wiki/Reactive_programming In computing, reactive progr ...

  10. data_summarize.pl data目录文本时长汇总脚本

    #!/usr/bin/env perl # Copyright 2018 Jarvan Wang if (@ARGV != 1) { #print STDERR "Usage: keywor ...