美文网首页
动态规划总结篇

动态规划总结篇

作者: Songger | 来源:发表于2019-10-02 00:13 被阅读0次
  1. 808 Soup Servings
  2. 837 新21点
  3. 464 can i win
  4. 最大平均值和
  1. 808 Soup Servings
    想到的方式是通过回溯暴力解,但是很明显不合理。
    dp公式:f(a, b) = 0.25 * (f(a - 4, b) + f(a - 3, b - 1) + f(a - 1, b - 3) + f(a - 2, b - 2)
    double memo[200][200];
    double soupServings(int N) {
        return N >= 4800 ?  1.0 : f((N + 24) / 25, (N + 24) / 25);
    }
    double f(int a, int b) {
        if (a <= 0 && b <= 0) return 0.5;
        if (a <= 0) return 1;
        if (b <= 0) return 0;
        if (memo[a][b] > 0) return memo[a][b];
        memo[a][b] = 0.25 * (f(a-4,b)+f(a-3,b-1)+f(a-2,b-2)+f(a-1,b-3));
        return memo[a][b];
    }
  1. 837 新21点
    想到的方法还是回溯递归,可以得到正确答案,但是时间复杂度会超。
    dp公式:f(n)=f(n-1)/w + f(n-2)/w + ... + f(n-w)/w
#psuedocode
dp[k] = 1.0 when K <= k <= N, else 0.0
# dp[x] = the answer when Alice has x points
for k from K-1 to 0:
    dp[k] = (dp[k+1] + ... + dp[k+W]) / W
return dp[0]
  1. 464 can i win
    由于是无放回的抽取,所以不能使用动态规划。解法只能是带缓存的递归。

  2. 813 最大平均值和的分组
    状态转移方程:dp[i][k] = max(dp[i][k], dp[j][k - 1] + 1.0 * (sum[i] - sum[j]) / (i - j))

相关文章

  • 动态规划总结篇

    808 Soup Servings 837 新21点 464 can i win 最大平均值和 808 Soup ...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

  • 动态规划 Dynamic Programming

    从运筹学和算法的角度综合介绍动态规划 算法分类总结动态规划与静态规划的关系浅析静态规划和动态规划动态规划解非线性规...

  • 70. Climbing Stairs

    动态规划篇了

  • 【算法】动态规划(二)

    前言 上一篇,介绍了动态规划DP的概念,以及暴力递归和动态规划的关系。这一篇,将介绍几道经典的动态规划题 1、台阶...

  • 动态规划总结

    1.dp[i]表示以A[i]结尾的最值 例子1:最大连续子序列和(洛谷P3009)dp[i]=max(dp[i-1...

  • 动态规划总结

    好像理论上,都是生成一个新的数组,从前往后一步步的走,不用想太多。列出新数组第 i 个值处的推到公式(基本上会与新...

  • 动态规划总结

    动态规划 通过子问题递推求解最优的方法, 动态规划常常适用于有重叠子问题和最优子结构性质的问题 。 解题思路 动态...

  • 动态规划总结

    拉勾教育版权所有:https://kaiwu.lagou.com/course/courseInfo.htm?co...

  • 动态规划总结

    动态规划的三大步骤 动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存...

网友评论

      本文标题:动态规划总结篇

      本文链接:https://www.haomeiwen.com/subject/xmslpctx.html