微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态规划背包

如何解决动态规划背包

我正在尝试解决这个问题,但是有几个测试用例失败了。 我正在使用备忘录表调用 arr 来优化递归。

我可能做错了什么?

increase <- 1.00022
df <- data.frame(city = c("A","B","C","D","E","F","G"),start_pop = c(100,200,300,400,500,600,700)) %>% 
  mutate(Feb19 = start_pop * increase) %>% 
  mutate(Mar19 = Feb19 * increase) %>% 
  mutate(Apr19 = Mar19 * increase)
...

解决方法

当您对列表 *(n+1) 执行 [[-1]*(W+1)] 时,您实际上是在创建具有相同引用的多个列表。

您可以尝试使用 arr = [[-1]*(W+1) for i in range(0,(n+1))] 代替 arr=[[-1]*(W+1)]*(n+1)

因此,当您更改一个列表时,更改也会反映在其他列表中,因为它们都指向同一个列表。

W,n = 3,3
arr = [[-1]*(W+1)]*(n+1)
print(arr)
arr[0][0] = -2
print(arr)

输出

[[-1,-1,-1],[-1,-1]]
[[-2,[-2,-1]]

请注意我如何更改 arr[0][0]arr[1][0]arr[2][0]arr[3][0] 也会更改。

但是有了这个

W,3
arr = [[-1]*(W+1) for i in range(0,(n+1))]
print(arr)
arr[0][0] = -2
print(arr)

输出

[[-1,-1]]

仅更改了 arr[0][0]

如果这有效,那么您可以查看 List of lists changes reflected across sublists unexpectedly 以获取有关此的更多信息。

注意: 我没有运行你的全部代码,所以我不能保证你的算法实现的正确性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。