作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正试图从 SPOJ 解决这个问题,这是一个动态规划问题,但我在可视化递归步骤时遇到了问题。我相信它类似于背包,但这里有氧气和氮气两个约束条件。
最佳答案
我认为这应该可行:
dp[i, j] = minimum weight needed such that we have i litres of oxygen and j litres
of nitrogen
dp[0, 0] = 0 and inf everywhere else
for each read cylinder k do
for i = maxTotalOxygen down to oxygen[k] do
for j = maxTotalNitrogen down to nitrogen[k] do
dp[i, j] = min(dp[i, j], <- do not take cylinder k
dp[i - oxygen[k], j - nitrogen[k]] + weight[k]) <- take cylinder k
Answer is the minimum dp[i, j] such that i >= RequiredOxygen and j >= RequiredNitrogen.
请注意,for
循环必须从最大值向下到当前柱面的值,否则您将允许一个柱面被多次使用。
问题约束非常小,我认为这应该可行。
关于c - 动态规划SPOJ问题SCUBADIV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849569/
我正在尝试解决 http://www.spoj.pl/problems/SCUBADIV/ spoj.com 上的这个问题,但我得到了 WA。我写了一个递归解决方案并使用了内存。谁能帮我找出我的错误?
我卡在 this question 上了得到WA。 我见过很多关于这个问题的自下而上的实现。我的自上而下的实现不适用于内存,但没有它也能正常工作。我该如何纠正它? #include #include
该问题是一个 0-1 背包问题,并尝试根据 2 个约束因素最小化输出。有人可以建议以下代码有什么问题吗?它给了WA。我正在使用自下而上的方法。有人可以指出失败的测试用例吗? #include #inc
我是一名优秀的程序员,十分优秀!