pascal的01背包的一维的downto

来源:百度知道 编辑:UC知道 时间:2024/05/06 07:19:15
为什么二维的时候两个循环都用to而用一维的时候要用downto...详细点..
麻烦再讲讲如果用to的话会出现怎 样的问题

不知道楼上在回答什么。。似乎一点关系都没有额。。
实际上二维也是应该用downto的。。
一般是这样写的:
for i:=1 to n do
for j:=vmax downto 0 do
if j>=v[i] then f[i,j]:=min(f[i-1,j-v[i]]+p[i],f[i-1,j]) else
f[i,j]:=f[i-1,j];
这样能够保证满足无后效性。。
你所说的to应该是可重复背包,即一样东西可以重复取的情况,做法类似筛法将可取到的数值标记起来,应该就是你所说的一维背包吧。。
另外再说两句(可能没什么关系),二维的背包可以利用滚动数组把空间复杂度降为O(vmax)但是时间复杂度是不能降的。。
希望是你想要的。。
如果还有不明白的,请baidu“背包九讲”,由dd大牛写的那份,写得很好,看看应该会受益不少~

我靠,你想一下在[x,y]中xy的变量是不一定的,游客能都需要变化,那必须要用两个啊!知道高精度么?一个原理哦!(优化的高精度)