打家劫舍的表长什么样

沿街五户人家钱数是 [2, 7, 9, 3, 1],相邻两家不能都偷。dp[i] 表示前 i 家最多能拿多少。 运行下面这段程序: #include <algorithm> #include <iostream> #

开始练习 →

最大子段和的表

dp[i] 表示以第 i 个数结尾的最大连续和。 运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include

开始练习 →

写打家劫舍

补全 rob:返回整张 dp 表,dp[i] 是前 i 家能拿到的最多钱。输出最后一项。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

写最大子段和

补全 max_sub:cur 是以当前这个数结尾的最大和,best 一路记住最大的那个。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

两个转移方程写在一起

把打家劫舍和最大子段和都补全,把两个答案拼起来输出(打家劫舍在前)。写完对照一下两个转移方程——形状几乎一样。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

初始值设错了会怎样

第 1 步:全是负数的一组数 第 2 步:左从首个数起,右从 0 起 第 3 步:左边一路更新到最大的那个 第 4 步:右边是 0:数组里没有它 -3 -1 -4 -3 0 -1 dp 表的初始值设错了,后果是【0】。

开始练习 →

爬楼梯的 dp[0] 设多少

爬楼梯问题里 dp[0] 应该设成【0】。

开始练习 →

best 初始化成 0 的问题

写最大子段和时把 best 初始化成 0,问题在于【0】。

开始练习 →

全是负数的时候

数组是 [-3, -1, -4],全是负数。一边把 best 初始化成第一个元素,一边初始化成 0。 运行下面这段程序: #include <algorithm> #include <iostream> #inclu

开始练习 →

把初始化写对

补全 max_sub:best 和 cur 都从第一个元素开始,循环从第二个元素起。对 [-3, -1, -4] 输出结果。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →