LeetCode 799 香槟塔[模拟+动态规划] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 799 香槟塔[模拟+动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
很好理解的模拟动态规划题,对于每个i层j位置的玻璃杯,如果超出了1,它会平均流给i+1层j位置和j+1位置的玻璃杯,这样自上而下把香槟流下去即可,代码如下:

class Solution 
public:
    double champagneTower(int poured, int query_row, int query_glass) 
        vector<vector<double>> dp(101, vector<double>(101, 0.0));
        dp[0][0] = poured;
        for(int i = 0; i <= query_row; i ++) 
            for(int j = 0; j <= i; j ++) 
                if(dp[i][j] >= 1) 
                    double rest = dp[i][j] - 1;
                    dp[i][j] = 1;
                    dp[i + 1][j] += rest / 2;
                    dp[i + 1][j + 1] += rest / 2;
                
            
        
        return dp[query_row][query_glass];
    
;

以上是关于LeetCode 799 香槟塔[模拟+动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 0799. 香槟塔

小白学DP(动态规划)

数据结构与算法之深入解析“香槟塔”的求解思路与算法示例

LeetCode 0123.买卖股票的最佳时机III:常数空间下的动态规划+模拟

动态规划:数塔问题

动态规划----数塔问题