输入x,y,x为源数字,y为目标值。输出x变成y的最少操作次数。

x每次可以执行三种操作:-1 、 +1 、 x2;

如 x=5,y=8:5-1=4,4x2=8;所以输出结果为2(次操作)。

可以发现用树形结构保存,并用层次遍历的方式找最简单。

层次遍历的实现就是通过队列,循环的将队列front的节点从队列中拿出来,将其儿子节点放入队列后……

#include <iostream>
#include <queue>
using namespace std;
struct node{
int num; //数值
int level; //层数
node(int x,int y):num(x),level(y){}
}; int f(int a,int b){
if(a==b) return ;
queue<node> q;
node aa(a,);
q.push(aa);
while(!q.empty()){
node top = q.front();
q.pop();
if(top.num == b)
return top.level;
q.push(node(top.num-,top.level+));
q.push(node(top.num+,top.level+));
q.push(node(top.num*,top.level+));
}
return -;
}
int main(){
int a,b;
cin>>a>>b;
cout<<f(a,b)<<endl;
}

x变成y的最少操作次数(层次遍历)的更多相关文章

  1. 面试题:对一个正整数n,算得到1需要的最少操作次数

    实现一个函数,对一个正整数n,算得到1需要的最少操作次数.操作规则为:如果n为偶数,将其除以2:如果n为奇数,可以加1或减1:一直处理下去.例子:func(7) = 4,可以证明最少需要4次运算n = ...

  2. 给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。

    问题: 给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数. 你总共三种操作方法: 1.插入一个字符 2.删除一个字符 3.替换一个字符 格式: 输入行输 ...

  3. 求x到y的最少计算次数

    链接:https://www.nowcoder.com/questionTerminal/45d04d4d047c48768543eeec95798ed6?orderByHotValue=1& ...

  4. 求x到y的最少计算次数 (BFS)

    时间限制:1秒 空间限制:262144K 给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y? 例如:a=3,b=11: 可以通过3*2*2-1,3 ...

  5. POJ2431贪心(最少加油次数)

    题意:        给一个终点,然后给你一个卡车距离终点的距离,还有其他个加油站距离终点的距离,然后每走一个单位距离要花费一个单位油,卡车的邮箱是无限大的,而每个加油站的油量是有限的,整个路径是一个 ...

  6. [LeetCode] Minimum Moves to Equal Array Elements II 最少移动次数使数组元素相等之二

    Given a non-empty integer array, find the minimum number of moves required to make all array element ...

  7. 面试官:你有m个鸡蛋,如何用最少的次数测出鸡蛋会在哪一层碎?

    假设你面前有一栋n层的大楼和m个鸡蛋,假设将鸡蛋从f层或更高的地方放扔下去,鸡蛋才会碎,否则就不会.你需要设计一种策略来确定f的值,求最坏情况下扔鸡蛋次数的最小值. leetcode原题链接 乍一看这 ...

  8. LeetCode 5282. 转化为全零矩阵的最少反转次数

    地址 https://leetcode-cn.com/submissions/detail/39277402/ 题目描述给你一个 m x n 的二进制矩阵 mat. 每一步,你可以选择一个单元格并将它 ...

  9. 二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)

    将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...

随机推荐

  1. [转载来之雨松:NGUI研究院之为什么打开界面太慢(十三)]

    本文固定链接: http://www.xuanyusong.com/archives/2799

  2. sql server中的开窗函数over、视图、事物

    一.开窗函数over的作用有两个: 1.排序order by,row_number,翻页 2.划区partition by,结合聚合函数针对某部分数据进行汇总 翻页的sql server 语句: an ...

  3. redis 通用函数

    redis 通用函数 construct 命令/方法/函数 Description Creates a Redis client 创建一个Redis客户端 Example $redis = new R ...

  4. AIM Tech Round 5 (rated, Div. 1 + Div. 2) (A, B, E)

    B.Unnatural Conditions 题目链接 : http://codeforces.com/contest/1028/problem/B #include<iostream> ...

  5. Linux基础命令---iostat显示设备状态

    iostat iostat指令用来显示cpu状态,系统IO设备的状态,以及相关磁盘和NFS使用状态.iostat命令通过观察设备相对于其平均传输速率的活动时间来监视系统输入/输出设备负载.iostat ...

  6. ceph运维常用指令

    一.集群 1.启动一个ceph 进程 启动mon进程 service ceph start  mon.node1 启动msd进程 service ceph start mds.node1 启动osd进 ...

  7. java 实现hex文件转换bin保存至内存中

    hex 文件的格式,以文件中某一行字符串(16进制)为例: :10 0830 00 020C5D0224B3FFFFFFFFFFFFFFFFFFFF 7E 10,长度,转换成10进制,也就是16B 大 ...

  8. datagridview 查询数据库数据

    private void btnsearch_Click(object sender, EventArgs e) { if (txtSearch.Text != "") { thi ...

  9. EDK II之SMM/SMI

    SMM:System Managerment Mode SMM有自己的smm core以及dispatcher(可以简单的把smm core跟dxe core看成是平行的存在),smm有自己的运行空间 ...

  10. shell实现rpm -e 一键卸载所有相关包以及依赖

    原理也比较简单, 刚好用到就稍微写了一下, 做个笔记 #!/bin/bash #************************************************************ ...