前言

题目链接

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

从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)

例如,在倾倒一杯香槟后,最顶层的玻璃杯满了。倾倒了两杯香槟后,第二层的两个玻璃杯各自盛放一半的香槟。在倒三杯香槟后,第二层的香槟满了 - 此时总共有三个满的玻璃杯。在倒第四杯后,第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟,如下图所示。


现在当倾倒了非负整数杯香槟后,返回第 i 行 j 个玻璃杯所盛放的香槟占玻璃杯容积的比例( i 和 j 都从0开始)。


一、代码实现

//动态规划
double champagneTower(int poured, int query_row, int query_glass)
{//int *dp = (int *)malloc(sizeof(int) * (query_row * query_row));double dp[query_row + 1][query_row + 1];dp[0][0] = poured;for (int i = 1; i <= query_row; i++){for(int j = 0; j <= query_glass; j++){dp[i][j] = 0;//第一个杯子if (j == 0){(dp[i-1][j] > 1) ?  (dp[i][j] = (dp[i-1][j] - 1) / 2) : 0; }//最后一个杯子else if ( i == j){(dp[i-1][j-1] > 1) ?  (dp[i][j] = (dp[i-1][j-1] - 1) / 2) : 0; }else{(dp[i-1][j] > 1) ?  (dp[i][j] += (dp[i-1][j] - 1) / 2) : 0;(dp[i-1][j-1] > 1) ?  (dp[i][j] += (dp[i-1][j-1] - 1) / 2) : 0; }}}return dp[query_row][query_glass] > 1 ? 1 : dp[query_row][query_glass];
}

算法 香槟塔(动态规划)相关推荐

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

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

  2. 799. 香槟塔 ----- 动态规划、模拟、逆向

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

  3. LC-799.香槟塔

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

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

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

  5. php算法学习,php算法学习之动态规划

    动态规划程序设计是对解最优化问题的一种途径.一种方法,最终问题的最优解可以通过前面子问题的最优解推导出来. 对于动态规划这个算法,自己学习的还不是很透彻,简单的总结自己学习的感受是: 动态规划思想中融 ...

  6. 算法模板:动态规划之线性DP【沈七】

    算法模板:动态规划之线性DP 前言 线性DP 数字三角形模型 摘花生 最小路径和 不同路径模型 不同路径(有障碍) 过河卒 (综合应用) 最长上升子序列模型 木棍加工 导弹拦截 完结散花 参考文献 前 ...

  7. 算法——最优解之动态规划

    相应的练习代码:https://github.com/liuxuan320/Algorithm_Exercises 1. 动态规划的定义 动态规划作为一个非常优秀的算法被很多应用称为Optimal A ...

  8. 【算法】【动态规划篇】第3节:数字三角形问题

    本期任务:介绍算法中关于动态规划思想的几个经典问题 [算法][动态规划篇]第1节:0-1背包问题 [算法][动态规划篇]第2节:数字矩阵问题 [算法][动态规划篇]第3节:数字三角形问题 [算法][动 ...

  9. Leetcode 799. 香槟塔

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

最新文章

  1. python程序语法元素分析_Python程序语法元素分析(2)
  2. android ext3 格式化,怎样将TF卡格式化为EXT分区?
  3. Linux——CentOS安装桌面
  4. Net中的AOP系列之《将AOP作为架构工具》
  5. 01-NLP-02-gensim中文处理案例
  6. 每日算法系列【LeetCode 495】提莫攻击
  7. ISO12233分辨率测试卡的使用方法
  8. DSP SRIO接口设计
  9. Java毕设项目车辆调度管理系统计算机(附源码+系统+数据库+LW)
  10. 【行列式2】n阶行列式的展开
  11. 幸福究竟和哪些因素有关?通过JMP来看全球幸福指数
  12. 零基础要如何成为前端工程师?
  13. 数字电路:半加器和全加器实验
  14. sdio wifi 移植
  15. 数字电路实验(十二)——CPU综合设计(8)
  16. iphone所有机型的屏幕尺寸
  17. TypeORM的官方文档(转发)
  18. 用网络损伤仪测试物联网
  19. API:BUMO HTTP
  20. 点、线和边缘检测 个人笔记(含Sobel和Laplace等算子、Marr-Hildreth和Canny实现及Hough变换)

热门文章

  1. Alpha版本事后诸葛亮
  2. Service的两种启动方式与区别
  3. 工作那些事(三十)如何提升个人能力
  4. MySQL-实践总结-
  5. 名帖323 启功 行书《自作诗选集》
  6. matlab模拟gpd,GPD WIN1流畅玩游戏之DOS游戏,阿猫阿狗大作战 大宇16个DOS游戏全合集...
  7. Make-A-Video(造啊视频)——无需文字-视频数据的文字转视频(文生视频)生成方法
  8. 俞敏洪老师在新东方20期新教师培训会议上的讲话
  9. 如何用计算机计算梁的受力,如何计算梁的承重
  10. 计算机创建网络连接,小编教你电脑怎么创建宽带连接_电脑创建宽带连接的方法...