完全背包的一维写法怎么填
完全背包压成一维之后,容量应该【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】。
开始练习 →