两种规则各是多少
三件 (重3值8)、(重4值9)、(重5值11),容量 10。一边每件只能拿一次,一边同一件能拿很多次。运行下面这段程序: #include <algorithm> #include <iostream> #incl
写完全背包
补全 knap_full:同一件能拿很多次,容量从小到大循环。输出容量 10 的最大价值。 本路线的物品:(重 3 值 8)、(重 4 值 9)、(重 5 值 11),写成 vector<pair<int, int>>
零钱兑换最少几枚
面值 2、3、7,每种数量不限,凑出 12。补全 coin_min,输出最少要几枚。(这就是完全背包,只不过求的是最小值。) (本题用 g++ -std=c++17 -O0 编译。)
零钱兑换有几种组合
同样的面值和金额,这次问有几种不同的组合(只看用了哪些面值各几枚,不看先后顺序)。补全 coin_ways。 (本题用 g++ -std=c++17 -O0 编译。)
一份代码只换一个方向
写一个 knap(items, cap, back):back 为真时容量倒着循环(0/1 背包),为假时正着循环(完全背包)。输出「0/1 的答案/完全的答案」。 本路线的物品:(重 3 值 8)、(重 4 值 9)、(重 5 值 11)
滚动数组在做什么
第 1 步:两行就够:旧的一行、新的一行 第 2 步:第 1 件:由旧行算出新行 第 3 步:新行变成下一轮的旧行 第 4 步:第 2 件:由旧行算出新行 第 5 步:新行变成下一轮的旧行 第 6 步:第 3 件:由旧行算出新行 第 7 步
什么时候能滚(C++)
一个 DP 能用滚动数组,条件是【0】。
滚了之后哪样没变(C++)
用滚动数组优化之后【0】。
两张表各占多少格
三件物品、容量 10。二维表是 (件数+1) × (容量+1),一维表就是 容量+1。运行下面这段程序: #include <algorithm> #include <iostream> #include <s
两种写法算得一样吗
二维写法取 dp[3][10],一维写法取 dp[10]。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #inc