码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 799. 香槟塔


    题目链接
    思路:动态规划+模拟
    分析:可以将杯子的容量先扩大,就是将当前层的杯子看成无限大的容量,装再多的水也不会溢出,然后再把容量缩小为1份玻璃杯的体积。
    模拟:为了好模拟,先将poured这个数放到无限大,将poured杯的水全部倒入第一层的杯子里,那么第一个杯子装了poured杯的水,那么溢出的水也就是poured-1。
    溢出到第二层,第二层的第一个杯子装的水就是(poured-1)/2,第二层的第二个杯子装的水也是(poured-1)/2。再分析每个杯子溢出的水,直到分析到题目要我们求得杯子,就完成了。
    定义:dp[i][j]:表示第i行第j列杯子里的水量(可以大于1)
    如果dp[i][j]>1,那么肯定是要溢出的,溢出的水的量就是dp[i][j]-1,溢出的水去向分别是dp[i+1][j]和dp[i+1][j+1]。这就是动态转移方程。
    代码:

    class Solution {
        public double champagneTower(int poured, int query_row, int query_glass) {
            //dp[i][j]:表示第i行第j列杯子里的水量(可以大于1)
            double[][] dp = new double[query_row+2][query_row+2];
            //由上面分析的动态转移方程知,需要从前往后进行转移
            dp[0][0] = poured;
            for(int i=0; i<=query_row; i++){
                for(int j=0; j<=i; j++){
                    if(dp[i][j]<=1){
                    	//不会溢出
                        continue;
                    }
                    //溢出,溢出的水只有两个去向
                    dp[i+1][j] += (dp[i][j]-1)/2;
                    dp[i+1][j+1] += (dp[i][j]-1)/2;
                }
            }
            
            return Math.min(1.0d, dp[query_row][query_glass]);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    秋招结束,休息了好长一段时间了。
    继续开始给自己充电。

  • 相关阅读:
    leetcode(力扣)135. 分发糖果 (贪心)
    LeetCode·32.最长有效括号·栈·动态规划
    基于Locust实现MQTT协议服务的压测脚本
    【Vue】v-for中:key中item.id与Index使用的区别
    可重入函数与不可重入函数介绍
    Linux:mongodb数据库基础操作(3.4版本)
    rotation matrix &reflection matrix
    【C++笔记】第十三篇 面向对象及三大特性
    IDApro和gdb的常见调试命令
    如何确定 <board_name>名字
  • 原文地址:https://blog.csdn.net/weixin_42496727/article/details/127946339
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号