首页课程小红花墙

C++ 入门 · 小纸条

选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。

第 1 章30第 2 章30第 3 章30第 4 章30第 5 章30第 6 章30第 7 章30第 8 章30第 9 章30第 10 章30第 11 章30第 12 章30第 13 章30第 14 章30第 15 章30第 16 章30第 17 章30第 18 章30第 19 章10
只印题目
第 1 页 · 正面(题目)
1活动安排

为什么按结束时间而不是开始时间?

2排序是贪心的搭档

想想还有哪些题"排完序就好办了"。

3合并区间

[1,3] 和 [2,5] 能合并吗?合并成什么?

4递归再认识

求 n 的阶乘,边界是什么?

5递归的执行过程

画出求 4 的阶乘的调用过程。

6递归求斐波那契慢在哪

怎么避免重复计算?

7记忆化

记忆化需要额外准备什么?

8递推更直接

用递推求斐波那契第 30 项。

9汉诺塔

3 个盘要移几次?

10分治的思想

分治的三个步骤是什么?

第 1 页 · 背面(答案)

参考答案(家长):分糖果、合并区间、田忌赛马都是。

参考答案(家长):早结束才能给后面腾出更多时间。

参考答案(家长):n 为 0 或 1 时直接返回 1。

参考答案(家长):能,合成 [1,5]。

参考答案(家长):把算过的存起来,或者改成从小往大推。

参考答案(家长):4×(3×(2×(1))),从里往外算回去。

参考答案(家长):两个变量滚动相加,30 次循环即可。

参考答案(家长):一个数组记"算没算过、结果是多少"。

参考答案(家长):分、治、合。

参考答案(家长):7 次,规律是 2 的 n 次方减 1。

第 2 页 · 正面(题目)
11归并排序

合并两个各 3 个元素的有序数组,要比几次?

12归并的复杂度

一千个元素,归并排序大约做多少次比较?

13快速排序

快排和归并的主要区别是什么?

14快排的最坏情况

什么样的数据会让快排最慢?

15复杂度回顾

二分查找套在循环里,是什么复杂度?

16由数据范围反推

n 是十万,你会考虑什么复杂度的算法?

17空间也要算

能开一千乘一千的二维整数数组吗?

18时间换空间

什么情况下值得这样换?

19空间换时间

举一个你用过的"空间换时间"。

20写代码前先估算

n 是十万你写了两层循环,会怎样?

第 2 页 · 背面(答案)

参考答案(家长):约一万次(1000 乘 10)。

参考答案(家长):最多 5 次,每次确定一个位置。

参考答案(家长):已经有序且总选第一个当基准的时候。

参考答案(家长):快排在"分"的时候做工作,归并在"合"的时候做工作。

参考答案(家长):n log n 或线性。

参考答案(家长):n 乘 log n。

参考答案(家长):内存吃紧而查询次数不多的时候。

参考答案(家长):能,一百万个数约 4MB,很安全。

参考答案(家长):一百亿次,必然超时。

参考答案(家长):前缀和、记忆化、桶统计都算。

第 3 页 · 正面(题目)
21综合练习一

动手写完整。

22综合练习二

1 2 5 3 4 6 8 的答案是多少?

23综合练习三

这题要用到哪几样学过的东西?

24综合练习四

[1,3] [2,6] [8,10] 合并后是什么?

25综合练习五

为什么比从头数一遍快?

26学会看自己的错

翻出最近一次错误,写下当时的错误想法。

27建自己的模板库

整理三个你最常用的代码片段。

28一题多解

挑一道题用第二种方法重做。

29讲给别人听

给同学讲一道你最近做的题。

30阶段小结

给自己列一张"我已经掌握的算法"清单。

第 3 页 · 背面(答案)

参考答案(家长):4(3 4 6 8)。

参考答案(家长):读入、求和求最值、计数、排序,四段拼起来。

参考答案(家长):[1,6] 和 [8,10]。

参考答案(家长):字符处理、计数数组、排序。

参考答案(家长):记录思维错误,比记录代码错误有用。

参考答案(家长):两次二分各 log n,比线性快得多。

参考答案(家长):能说出两种方法各自的适用场景,才算真懂。

参考答案(家长):亲手整理过的,才记得住。

参考答案(家长):写得出来的才是真会的。

参考答案(家长):讲的过程会暴露你自己都没意识到的模糊处。

op599 课程