memset 填 1 得到几

本平台 int 占 4 个字节。 运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <vec

开始练习 →

memset 填 0x3f 得到几

竞赛里常用 0x3f 当「无穷大」。 运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <v

开始练习 →

网格路径表的初始化

补全:5 × 5 的网格,dp 表每一格先设成 1(第一行、第一列都只有一条路),再从 (1,1) 开始填。原来用 memset 填 1,结果全错了。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

无穷大别用 memset 填

补全:硬币面值 1、5、11,凑出 15 最少要几枚?dp[x] 初始都是「无穷大」1000000000,dp[0] = 0。原来用 memset 填这个数,结果全是 0。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

二维记忆化用 -1 构造

补全:记忆化求 10 × 10 网格的路径数,memo 里 -1 表示没算过。原来的 memo 构造时全是 0,查表永远命中。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

指针的 sizeof 只有 8

补全 clear:把传进来的 n 个 int 全部清零。原来写 memset(a, 0, sizeof a),可 a 在函数里只是个指针(本平台占 8 字节),只清掉了前两个。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

memo 用 -1 标记要填对

补全:记忆化求 fib(40),memo 里 -1 表示没算过。原来写 memset(memo, 1, sizeof memo),每格是 16843009,查表全都命中错值。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

三个经典题的共同点

第 1 步:只记住最近的两格 a、b 第 2 步:往前滚一格,旧的不用存 第 3 步:往前滚一格,旧的不用存 第 4 步:往前滚一格,旧的不用存 第 5 步:往前滚一格,旧的不用存 第 6 步:往前滚一格,旧的不用存 第 7 步:整张表只剩

开始练习 →

打家劫舍每一步在选什么

打家劫舍的转移方程,每一步在决定【0】。

开始练习 →

爬 10 级和爬 20 级

楼梯从 10 级加到 20 级,走法数会变成多少? 运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #includ

开始练习 →