博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
375. 猜数字大小 II leetcode java
阅读量:4326 次
发布时间:2019-06-06

本文共 967 字,大约阅读时间需要 3 分钟。

题目:

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

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

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

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

示例:

n = 10, 我选择了8.第一轮: 你猜我选择的数字是5,我会告诉你,我的数字更大一些,然后你需要支付5块。第二轮: 你猜是7,我告诉你,我的数字更大一些,你支付7块。第三轮: 你猜是9,我告诉你,我的数字更小一些,你支付9块。游戏结束。8 就是我选的数字。你最终要支付 5 + 7 + 9 = 21 块钱。

给定 n ≥ 1,计算你至少需要拥有多少现金才能确保你能赢得这个游戏。

思路:

class Solution {    public int getMoneyAmount(int n) {        int[][] dp = new int[n + 1][n + 1];        for (int j = 2; j <= n; j++) {            for (int i = j - 1; i >= 0; i--) {                int global_min = Integer.MAX_VALUE;                for (int k = i + 1; k < j; k++) {                    int max = k + Math.max(dp[i][k - 1], dp[k + 1][j]);                    global_min = Math.min(global_min, max);                }                dp[i][j] = i + 1 == j ? i : global_min;//当i == j - 1时,dp[i][j]即为i j中的较小者i            }        }        return dp[1][n];    }}

 

转载于:https://www.cnblogs.com/yanhowever/p/10668901.html

你可能感兴趣的文章
hdoj 4940 强连通图
查看>>
Shell脚本编写
查看>>
Spark系列(三)SparkContext分析
查看>>
UnityWebReqest和WWW,请求web数据打包到Android手机上,报错 Unknown error记录
查看>>
Java字符串首字母大写
查看>>
一个前端博客(7)——事件绑定和移除事件
查看>>
X.509,RSA,PKCS 普及
查看>>
探讨e.target与e.currentTarget
查看>>
CPU内存管理和linux内存分页机制
查看>>
FreeRTOS系列第14篇---FreeRTOS任务通知
查看>>
未完成
查看>>
如何获取客户端MAC地址(三个方法)
查看>>
倩女幽魂
查看>>
禅道去除游客访问功能
查看>>
matlab_day1
查看>>
3.选择排序
查看>>
异常为"当IDENTITY_INSERT设置为OFF时" 解决办法
查看>>
FFMPEG 常用命令行
查看>>
关于在mysql和oracle中编码对varchar等类型的影响
查看>>
【Java面试题】9 abstract class和interface有什么区别?
查看>>