答案和用掉的格子一起报

答案和用掉的格子一起报

写出一维版,输出答案和这张表一共有多少格。

阅读更多 →
把二维改成一维

把二维改成一维

下面给的是二维版。把它改写成只用一个一维数组的版本,输出容量 10 的最大价值。

阅读更多 →
两种写法算得一样吗

两种写法算得一样吗

二维写法取 dp[3][10],一维写法取 dp[10]。运行下面这段程序: def knap2d(items, cap): dp = [[0] * (cap + 1) for _ in ra

阅读更多 →
两张表各占多少格

两张表各占多少格

三件物品、容量 10。二维表是 (件数+1) × (容量+1),一维表就是 容量+1。运行下面这段程序: items = [(3, 8), (4, 9), (5, 11)] cap = 10 two

阅读更多 →
滚了之后哪样没变

滚了之后哪样没变

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

阅读更多 →
什么时候能滚

什么时候能滚

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

阅读更多 →
滚动数组在做什么

滚动数组在做什么

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

阅读更多 →
⚠️ 一份代码,只换一个方向

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

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

阅读更多 →
零钱兑换:有几种组合

零钱兑换:有几种组合

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

阅读更多 →
零钱兑换:最少几枚

零钱兑换:最少几枚

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

阅读更多 →