【问题标题】:Understanding Base case in Dynamic programming了解动态规划中的基本案例
【发布时间】:2019-10-13 05:56:54
【问题描述】:

考虑这个问题count of different ways express-n sum-1-3-4

我的理解是 f(n) 是将 n 表示为 1、3 和 4 之和的方法数

f(n-1) 是将 n-1 表示为 1、3 和 4 之和的方式数

f(1) 是将 1 表示为 1、3 和 4 之和的方式数

f(0) 是将 0 表示为 1、3 和 4 之和的方式数

不应该是 0,因为没有办法将 0 表示/表示为 1、3、4 的总和

刚开始学习动态编程,但我不明白为什么应该是 1 而不是 0

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    假设您想将某个总和 S 表示为 1、3 和 4 的总和

    您可以在数学上将其写成等式S = 1*x + 3*y + 4*z,其中 x,y,z 表示总和中的一、三和四的数量。

    所以现在f(S) 只是方程解的数量(记住 x,y,z 是非负整数)

    S=0 时,我们可以很容易地看到方程有一个解 - x=0, y=0, z=0

    【讨论】:

    • 这个问题也考虑了排列。只有通过方程求解才能给你组合。
    • 这个等式可能有助于理解,但正如 vivek_23 指出的那样,这个答案中的f(S) 可能是一个不同的函数,因为它似乎没有解决排列问题。
    【解决方案2】:

    如果您的建议是正确的,那么我们也不能将 1 + 1 + 1 视为表示 3 的一种方式,因为该总和不包括 3 或 4。

    与其说“将 n 表示为 1、3 和 4 的总和”的方式数量,不如将其视为总和为 n 的 1、3 和 4 的可选选择的排列数。那么target 0只有一种这样的安排,就是不选。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2014-03-25
      相关资源
      最近更新 更多