求x到y的最少计算次数
时间:2019-08-30
本文章向大家介绍求x到y的最少计算次数,主要包括求x到y的最少计算次数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y?
例如:
a=3,b=11: 可以通过3*2*2-1,3次操作得到11;
a=5,b=8:可以通过(5-1)*2,2次操作得到8;
a=3,b=11: 可以通过3*2*2-1,3次操作得到11;
a=5,b=8:可以通过(5-1)*2,2次操作得到8;
输入描述:
输入以英文逗号分隔的两个数字,数字均在32位整数范围内。
输出描述:
输出一个数字
示例1
输入
3,11
输出
3
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ String str = scanner.next(); String[] str1 = str.split(","); int a = Integer.parseInt(str1[0]); int b = Integer.parseInt(str1[1]); System.out.println(minTimes(a,b)); } } public static int minTimes(int a,int b){ if (a == b){ return 0; } List<number> list = new ArrayList<>(); list.add(new number(0,a)); while (!list.isEmpty()){ number tmp = list.remove(0); if (tmp.num == b){ return tmp.floors; } else if(tmp.num < -100 || tmp.num > 100){ continue; } list.add(new number(tmp.floors+1,tmp.num+1)); list.add(new number(tmp.floors+1,tmp.num-1)); list.add(new number(tmp.floors+1,tmp.num*2)); } return -1; } } class number{ int floors; int num; public number(int floors, int num) { this.floors = floors; this.num = num; } }
原文地址:https://www.cnblogs.com/hetaoyuan/p/11437243.html
- SSL 证书部署过程
- MYSQL官方与主流开源版本基准压测对比
- 基础知识:多人使用一个Github仓库
- 基于Ubuntu16.04的微信小程序搭建过程
- 搭建微信小程序教程:基于CentOS 7.6的教程
- MySQL根据5.1.34之前版本的一个BUG分析O_DIRECT
- Git面试常见问题
- 剑指offer代码解析——面试题17合并两个排序的链表
- MySQL优化方案(一)优化SQL脚本与索引
- 从0学习MySQL系列(二)安装篇
- 从0学习MySQL系列(三)概念篇
- SQL Server基础SQL脚本之主外键约束
- SQL Server基础SQL脚本之Group By
- SQL Server基础SQL脚本之内外连接、交叉连接;函数、子查询
- 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 数组属性和方法