文章目录

  • 题目链接
  • 题目大意
  • 解题思路
  • 代码(C++)
    • 递推
    • 递归

题目链接

点我 (^_^)


题目大意






解题思路

一开始看到这个 poured 范围这么大,以为是可以直接推出数学公式,但推了半天没推出来。

然后发现,直接从顶部开始模拟即可,某个row 下的某个 glass 的体积等于其上面两个glass 的体积 - 1 相加再除2,可以写成如下公式:

Vrowglass=(Vrow−1glass−1−1)/2+(Vrow−1glass−1)/2V_{row}^{glass}=(V_{row-1}^{glass-1}-1)/2+(V_{row-1}^{glass}-1)/2Vrowglass​=(Vrow−1glass−1​−1)/2+(Vrow−1glass​−1)/2

当然对于最外面的两个杯子的体积,只和其上面一个杯子的体积有关。 最后结果注意要和 1 取最小值。

当然,算法既可以写成递归形式,也可以写成递推形式,递归形式要使用记忆化搜索,否则会超时。


代码(C++)

递推

class Solution {public:double champagneTower(int poured, int query_row, int query_glass) {vector<double> row = {(double)poured};for (int i = 1; i <= query_row; i++) {vector<double> nextRow(i + 1, 0.0);for (int j = 0; j < row.size(); j++) {double volume = row[j];if (volume > 1) {nextRow[j] += (volume - 1) / 2;nextRow[j + 1] += (volume - 1) / 2;}}row = nextRow;}            return min(1.0, row[query_glass]);}
};

递归

class Solution {public:double dp[105][105];double eps = 0.000000001;double func(double poured, int query_row, int query_glass) {if (query_row == 0)return poured;if(dp[query_row][query_glass] != -1)return dp[query_row][query_glass];if(query_glass == 0)return dp[query_row][query_glass] = max(0.0, (func(poured, query_row-1, 0)-1) / 2);if(query_glass == query_row)return dp[query_row][query_glass] = max(0.0, (func(poured, query_row-1, query_glass-1)-1) / 2);return dp[query_row][query_glass] = max(0.0, (func(poured, query_row-1, query_glass-1)-1) / 2) + max(0.0, (func(poured, query_row-1, query_glass)-1) / 2);}double champagneTower(int poured, int query_row, int query_glass) {for(int i=0; i<100; ++i)for(int j=0; j<=i; ++j)dp[i][j] = -1;return min(1.0, func((double)poured, query_row, query_glass));}
};

Leetcode799. 香槟塔相关推荐

  1. Leetcode 799. 香槟塔

    我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都 ...

  2. leecode.799. 香槟塔

    题目 香槟塔 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任 ...

  3. 二维香槟塔问题分析过程记录

    二维香槟塔物理模型分析 在取消酒杯数量和行数的限制下,还原倒酒全过程,深度分析第[i,j]个酒杯注满需要多少杯酒 这篇笔记先单纯分析问题 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有 ...

  4. LC-799.香槟塔

    8月22号腾讯笔试题 "水站的水流量" 799. 香槟塔 难度中等 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每 ...

  5. Java实现 LeetCode 799 香槟塔 (暴力模拟)

    799. 香槟塔 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了 ...

  6. 799. 香槟塔 : 简单线性 DP 运用题

    题目描述 这是 LeetCode 上的 799. 香槟塔 ,难度为 中等. Tag : 「动态规划」.「线性 DP」 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个 ...

  7. 【每日一题Day33】LC799香槟塔 | 动态规划

    香槟塔[LC799] 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟. 从顶层的第一个玻璃杯开始倾 ...

  8. leetcode799:香槟塔

         题目表述: 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟. 从顶层的第一个玻璃杯开始倾 ...

  9. 力扣(LeetCode)799. 香槟塔(C++)

    动态规划 设 iii 是行 , jjj 是列 , f[i][j]f[i][j]f[i][j] 表示经过杯子的酒量 ,初始 f[0][0]=pouredf[0][0]=pouredf[0][0]=pou ...

  10. LeetCode日记(香槟塔)第三天

    题目如下: 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟 ...

最新文章

  1. CentOS7的firewall和安装iptables
  2. 立即终止Sleep的线程
  3. 淘宝店铺图片数据迁移核心代码
  4. 在pytorch中自定义dataset读取数据2021-1-8学习笔记
  5. SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
  6. 资源分享 | 知识蒸馏总结、应用与扩展(2015-2019)
  7. 都说90后不好管?聊聊跳槽这件事儿
  8. 【工具相关】Web-Sublime Text2的用法(一)
  9. java写培根披萨和海鲜披萨_java子类继承父类实例-披萨的选择实现代码
  10. 怎么根据错误弹窗 判断进程_苹果手机弹窗bug是什么情况?苹果手机为什么会出现弹窗bug要怎么解决?...
  11. 所有程序员都应该知道的 6 个软件开发步骤
  12. 怎么使用outlook发送邮件?outlook群发邮件怎么撤回?
  13. 【机器学习与算法】python手写算法:Kmeans和Kmeans++算法
  14. containers详解
  15. 王者荣耀选手退役后转行Python,自学的那种!网友:中国版“阿甘”
  16. Python学习---根据excel的内容自动批量修改excel名称
  17. 触觉马达DRV2605
  18. 计算机网络中传输速率最快的,计算机网络中常用的传输介质中传输速率最快的是什么...
  19. 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫
  20. 显示HP小型机配置信息的相关命令

热门文章

  1. outlook邮件通过python发送_怎么发送邮箱-python调用outlook发送邮件的超详细操作步骤...
  2. Linux 系统编程-文件IO-文件描述符、open函数的使用、实现touch命令
  3. [线段树]打字练习记录
  4. Serialization
  5. ElasticSearch head 安装
  6. 微信小程序个人/企业开放服务类目一览表
  7. C# word类库 光标移动
  8. 数据是一把双刃剑,IPFS/FIL存储助力发展,合理应用技术中
  9. python idle界面_3.7 IDLE 用户界面
  10. 治军首在选将,余承东挂帅华为云