完全背包的一维写法怎么填

完全背包压成一维之后,容量应该【0】。

开始练习 →

⚠️ 为什么正着填就对了

完全背包正着填是对的,因为【0】。

开始练习 →

同一批物品,两种规则各是多少

三件 (重3值8)、(重4值9)、(重5值11),容量 10。一边每件只能拿一次,一边同一件能拿很多次。运行下面这段程序: def knap1d(items, cap): dp = [0] * (cap + 1) for w

开始练习 →

写完全背包

补全 knap_full:同一件能拿很多次,容量从小到大循环。输出容量 10 的最大价值。

开始练习 →

零钱兑换:最少几枚

面值 [2, 3, 7],每种数量不限,凑出 12。补全 coin_min,输出最少要几枚。 (这就是完全背包,只不过求的是最小值。)

开始练习 →

零钱兑换:有几种组合

同样的面值和金额,这次问有几种不同的组合(只看用了哪些面值各几枚,不看先后顺序)。

开始练习 →

⚠️ 一份代码,只换一个方向

写一个函数 knap(items, cap, back):back 为真时容量倒着循环(0/1 背包),为假时正着循环(完全背包)。 把两种调用的答案拼起来输出(0/1 在前)。

开始练习 →

滚动数组在做什么

滚动数组的做法是【0】。

开始练习 →

什么时候能滚

一个 DP 能用滚动数组,条件是【0】。

开始练习 →

滚了之后哪样没变

用滚动数组优化之后【0】。

开始练习 →