From 3578fc60b88d6bc07aa41348119978aba1b693b5 Mon Sep 17 00:00:00 2001 From: zornlemma Date: Mon, 7 Mar 2016 16:04:01 +0800 Subject: [PATCH] =?UTF-8?q?c[]=20=E4=B8=8E=20w[]=20=E7=9A=84=E6=B7=B7?= =?UTF-8?q?=E6=B7=86=E8=AF=AF=E7=94=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 显然,关于背包容量的v应该用c[i]来描述,按上面定义w[i]是价值。 即使是用量纲判断都不该出现v-w[i] 所以这里把一些w[i] 改成c[i] --- V1/P01.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/V1/P01.html b/V1/P01.html index 03ab2ee..e802046 100644 --- a/V1/P01.html +++ b/V1/P01.html @@ -97,7 +97,7 @@

一个常数优化

前面的伪代码中有 for v=V..1,可以将这个循环的下限进行改进。

-

由于只需要最后f[v]的值,倒推前一个物品,其实只要知道f[v-w[n]]即可。以此类推,对以第j个背包,其实只需要知道到f[v-sum{w[j..n]}]即可,即代码中的

+

由于只需要最后f[v]的值,倒推前一个物品,其实只要知道f[v-c[n]]即可。以此类推,对以第j个背包,其实只需要知道到f[v-sum{c[j..n]}]即可,即代码中的

 for i=1..N
@@ -108,7 +108,7 @@ 

一个常数优化

 for i=1..n
-    bound=max{V-sum{w[i..n]},c[i]}
+    bound=max{V-sum{c[i..n]},c[i]}
     for v=V..bound