gpt4 book ai didi

python - 阶乘的迭代动态规划效果很好,但它违反了 dp 的定义,因为阶乘中没有重叠的子问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:58 25 4
gpt4 key购买 nike

根据 dp 的定义,我对动态规划有疑问,如果它具有最优子结构并且重叠一些问题,则可以使用 dp 解决问题,但在阶乘问题中,所有子问题都是唯一的,但如果我们应用迭代 dp 仍然会得到正确答案 为什么会这样???如果我错了请纠正我

def fact(n):
dp = [-1 for i in range(n+1)]
dp[0] = 1
dp[1] = 1
i = 2
while i <= n:
dp[i] = i*dp[i-1]
i+=1
return dp[n]
n = int(input())
ans = fact(n)
print(ans)

最佳答案

动态规划有两种方法:自上而下和自下而上。

  • 自上而下:从顶部开始构建,这是所有重叠子问题都清晰可见的地方(递归)。
  • 自下而上:从底部开始构建。您找到基本案例的答案,并构建您的解决方案,这就是您所做的。重叠的子问题在这里不太明显。

关于python - 阶乘的迭代动态规划效果很好,但它违反了 dp 的定义,因为阶乘中没有重叠的子问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60199341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com