解题思路:这道题目的意思是我告诉你一个n值,然后我会在1到n之间选一个数字,让你来猜我选了哪个数。

我们需要意识到我们在范围 (1, n)中猜数字的时候,需要考虑最坏情况下的代价。也就是说要算每次都猜错的情况下的总体最大开销。

我们首先在 (1, n)中任意挑选一个数字,假设它是个错误的猜测(最坏情况),我们需要用最小代价去猜到需要的数字。那么在一次尝试以后,答案要么在我们猜的数字的左边要么在右边,为了考虑最坏情况,我们需要考虑两者的较大值。因此,如果我们选择 ii 作为第一次尝试,总体最小代价是:

作者:LeetCode
链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/solution/cai-shu-zi-da-xiao-ii-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
—————————————————————————————————
设立二维数组dp[i][j],dp[i][j]表示从i到j的数字之间猜中所需要的最小花费。根据上面的状态转移方程,可以得到C++代码如下:

class Solution {
public:int getMoneyAmount(int n) {if(n==1) //1到1之间的最小花费肯定是0return 0;if(n==2) //1到2之间的最小花费为1return 1;vector<vector<int>> dp(n,vector<int>(n,INT_MAX));  //二维数组用于存储状态转移方程for(int i=0;i<n-1;i++)  //这段程序用于存储当dp[i][i+1]的最小花费,因为二维数组的范围为0到n-1,所以dp[i][i+1]的最小花费不能是i,必须是i+1{dp[i][i+1] = i+1;}for(int i=0;i<n;i++) //这段程序的作用是初始化dp[i][i]的值为0{dp[i][i] = 0;}for(int i=n-2;i>=0;i--)  //这段程序是考虑在数字i到数字j之间的最小花费{for(int j=i+2;j<n;j++){for(int k=i+1;k<j;k++)  //循环从i到j之间的所有可能性,找出其中的最小值{dp[i][j] = min(dp[i][j],k+1 + max(dp[i][k-1],dp[k+1][j]));}}}return dp[0][n-1];}
};

leetcode - 375. 猜数字大小 II相关推荐

  1. LeetCode 375. 猜数字大小 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小 ...

  2. Leetcode 375. 猜数字大小 II 解题思路及C++实现

    方法一:递归 解题思路: 设置一个dp数组,dp[i][j] 表示从数字 i 到 j ,保证猜中所选数字所需的最小花费. 在数字 i 到 j 之间进行猜测时,我们选择数字 i < k < ...

  3. LeetCode 375. 猜数字大小 II

    题目大意: https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n ...

  4. 375. 猜数字大小 II

    375. 猜数字大小 II 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字. 你来猜我选了哪个数字. 如果你猜到正确的数字,就会 赢得游戏 . 如果你猜错了,那么我会告诉你 ...

  5. Java实现 LeetCode 374 猜数字大小 II

    375. 猜数字大小 II 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了. 然而,当你猜 ...

  6. leetcode 375. Guess Number Higher or Lower II | 375. 猜数字大小 II(动态规划思路总结)

    题目 https://leetcode.com/problems/guess-number-higher-or-lower-ii/ 题解 首先,看了 Related Topics,知道这是个 dp 问 ...

  7. C++题解-Leecode 375. 猜数字大小 II——Leecode每日一题系列

    今天是坚持每日一题打卡的第十七天 题目链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/submissions/ ...

  8. ​LeetCode刷题实战375:猜数字大小 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)

    [Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...

最新文章

  1. 安装 Anaconda 5.2+python 3.6地址
  2. 基类指针调用派生类函数_C++ 多态性:虚函数--基类与派生类类型转换(第7章 05)例子问题解析(学习笔记:第8章 05)...
  3. 自动驾驶多传感器融合
  4. VMware 9 安装 Mac OS X 10.8 Mountain Lion 图文全程
  5. 怎样下载安装python_Windows系统上如何安装Python和pip
  6. c语言寻找公共字符串,C语言查找两个字符串中的最大公共子串
  7. 检查密码 (15 分)
  8. 为Windows添加日志事件
  9. 16个PLC入门基础知识,大学生学PLC就跟玩一样
  10. android版本连击,死神vs火影无限能量连招版本-死神vs火影无限连招版v3.2 安卓版-腾牛安卓网...
  11. 一、PHP基础-安装PHP集成环境
  12. mysql按时间查询的优化_mysql按时间查询优化的方法
  13. 地图切片的概念与原理
  14. 存储服务器设置和文件对拷,思科CNNA中文教程-第一章路由器配置和文件管理(上)...
  15. 宝宝生活点滴(2009.11)
  16. 先用knn对数据集进行预处理再利用神经网络对数据集进行分类_监测大型民用结构的无线传感系统(二)——数据处理...
  17. 【信息系统项目管理师学习笔记】10大管理|47个过程组:项目整体管理|指导与管理项目执行
  18. 计算机组成原理实验 第六章,计算机组成原理实验
  19. 2022电工(初级)考试题模拟考试题库及在线模拟考试
  20. thymeleaf的文本内联th:inline

热门文章

  1. LZW数据压缩算法的原理分析
  2. 数据抽取工具比对:Kettle、Datax、Sqoop、StreamSets
  3. OSPF——NSSA区域及完全NSSA区域(含配置命令)、第七类LSA类型 LSA-7详解
  4. java异常处理简介_【自学java】异常处理简介
  5. 【熊猫站群系统@苹果cmsv10/Maccmsv10 站群深度定制版 开发日志】 优雅且高效的友链模块,一键打造强大的蜘蛛池
  6. 【安卓开发】Webview简单使用
  7. 标称型数据和数值型数据_统计信息中的数据类型-标称,有序,间隔和比率数据类型,并举例说明
  8. angular2创建应用_如何在Angular 2+应用程序中使用JavaScript库
  9. anki卡片重复_如何在Anki中使用间隔重复来学习更快的编码
  10. python文本菜单程序_从〇到一: Python GUI 程序:记事本