文章目录

  • 1. 题目
  • 2. 解题

1. 题目

我们正在玩一个猜数游戏,游戏规则如下:

我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。

每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。

然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。
直到你猜到我选的数字,你才算赢得了这个游戏。

示例:
n = 10, 我选择了8.
第一轮: 你猜我选择的数字是5,我会告诉你,我的数字更大一些,然后你需要支付5块。
第二轮: 你猜是7,我告诉你,我的数字更大一些,你支付7块。
第三轮: 你猜是9,我告诉你,我的数字更小一些,你支付9块。游戏结束。8 就是我选的数字。你最终要支付 5 + 7 + 9 = 21 块钱。
给定 n ≥ 1,计算你至少需要拥有多少现金才能确保你能赢得这个游戏。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 区间DP
class Solution {public:int getMoneyAmount(int n) {vector<vector<int>> dp(n+1, vector<int>(n+1, INT_MAX));// dp[i][j] 表示答案在 区间 [i,j] 内所需的最小花费for(int i = 1; i <= n; i++) dp[i][i] = 0;//初始化for(int len = 1; len <= n; len++) {for(int i = 1; i <= n-len; i++){int j = i+len;dp[i][j] = min(i + dp[i+1][j], dp[i][j-1] + j);//区间端点for(int k = i+1; k < j; k++){dp[i][j] = min(dp[i][j], max(dp[i][k-1], dp[k+1][j])+k);// [i,k-1]  k  [k+1, j]}}}return dp[1][n];}
};

64 ms 6.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 375. 猜数字大小 II(DP)相关推荐

  1. leetcode - 375. 猜数字大小 II

    解题思路:这道题目的意思是我告诉你一个n值,然后我会在1到n之间选一个数字,让你来猜我选了哪个数. 我们需要意识到我们在范围 (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. matlab数据可视化总结,机器学习----Matlab数据可视化总结(plot篇)
  2. leetcode--最小路径和--python
  3. editplus 配置 golang 开发调试环境
  4. 中继器 删除行_Axure9实操教程9-中继器动作(二)
  5. Double Strings
  6. python模拟猫狗大战_tensorflow实现猫狗大战(分类算法)-阿里云开发者社区
  7. vba调用linux shell,调用命令提示符并通过VBA中的Shell Exec执行命令
  8. NiosII软处理器快速入门- 10分钟学会NiosII(1)
  9. Android开发笔记(序)写在前面的目录
  10. mysql firstday_MySQL 计算本月的第一个和最后一个周一
  11. ASP.NET里的路径的使用-预备篇
  12. UE3名称结构(Name)
  13. 用科学数据求真:月球的激光发射器有用吗?
  14. php 数组去impload,你真的了解 load 方法么?
  15. core dump 简介
  16. db2 正则匹配_SQL正则表达式
  17. PhotoShop(2)ps常用工具和操作,ps 切图,cutterman下载使用
  18. c语言求最小值函数min的用法,C语言--min的宏定义
  19. 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组
  20. 从线下走到线上,艺术品能否找到新突破口?

热门文章

  1. Python实现自动推本地github博客到远程仓库
  2. 【Python的黑魔法】实例方法、静态方法和类方法
  3. kail中tools的安装和第一个php学习笔记
  4. layer ajax 用法,layer加载遮罩层使用 Ajax Loading Demo
  5. 【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总
  6. secureCRT中文字符乱码
  7. gunicorn 几种 worker class 性能测试比较
  8. Python中 sys.argv[]的用法
  9. 递归多线程实现前缀和
  10. dom4j创建、解析xml文件(增删改查)