干货 | 计概B(C语言)学习经验[下]
干货仓库
朋辈携手,消灭疑问!
Student Development Support
助教简介
苏鹏程,17级信息科学与技术学院直博生,担任SDS“问吧”和答疑群计算机&数学助教一年以上。
上篇:总体介绍和学法指南
下篇:详细的分章节重点梳理
计概B(c语言)学习经验(下篇)
计概B是许多理工科院系第一学期的必修课,也是许多没有大学前接触过编程的同学们的第一门编程课。我在SDS和工学院都担任过一年的计概与数算的学业辅导讲师,反响不错,受到学生和老师们的认可。我想借此机会将我辅导过程中的经验记录下来,供有需要的同学参考。
第二章《简单计算题》中,2.1和2.2例题解答都用到了数学方法,值得学习。2.3解答使用的是数组模拟的方法,在规模很小时(题目中的情况)这种写法也很不错,而思考题中问道当规模很大时怎么办,这个时候就得考虑高级数据结构如线段树(数算B也不会讲,在信科《数算实习》这门进阶课程中才有)之类的了。2.5是一道很经典也很有趣味的问题,思路是贪心算法,书上的讲解也很详细了,对于理解贪心算法来说,这道题很有帮助。
第三章《数制转换》也是计概必须掌握的内容。
第四章《字符串处理》也是必考内容。4.2中用数组进行统计的方法需要掌握。4.3也用到了这个方法,又多了用数组表示映射关系这个方法,也需要掌握。其中使用到了sort函数,可以掌握,会sort可以方便很多计概题目的解答,当然不会也可以手写冒泡等等。4.4例题的解题思路不错,实现上使用了许多c关于字符串的内置函数如strstr,strcpy,strncpy等,也值得一读。这一章的习题中,题2和题7的算法思想很经典,其他很多是与密码变换相关的题目,可以看看。
第五章《日期与时间处理》也是考试常考的内容。而例题中的解答可以完美回答初学者关于日期年月处理的所有困惑。
第六章《模拟》也是很基本也很有趣的算法思想。例题中第一题是约瑟夫问题;第二题是一个二维数组按要求模拟的问题,可以让大家熟练二维数组的操作,以及如何寻找二维数组的最大值;第三道例题是经典的输出问题,要求用字符组合输出某种平面图案,很值得学习;第四道例题给出了经典的寻找下一个排列的算法,也在leetcode上出现过,可以补充学习。
第七章《高精度计算》也是常考问题,而例题讲解和代码质量都不错,值得参考。
第八章《枚举》也是必考内容。枚举和搜索密切相关,很多例题都可以帮助新手熟悉搜索的思路及其代码实现,并思考如何缩小搜索空间(即剪枝)。例题8.5“熄灯问题”非常经典,值得学习。练习题中3和5都是“熄灯问题”的变种。
第九章《递归》不用说,是重点也是难点。每个例题都是经典算法题,值得细看。读完这一章后读者肯定很有收获。
第十章《动态规划》虽然不是计概要求范围内的内容,但也很能拓展编程新手的视野,应该说学会了动态规划,新手也可以从新手村毕业了。这一章的例题和习题都是很基础很典型的动态规划问题,强烈推荐感兴趣的同学学习。(当时我也在辅导时间花2小时讲完了这一章的内容)
第十一章《链表》没有例题,但附上了链表操作的大量代码,供读者查找学习。
第十二章《二叉树》计概应该不涉及,可以留到下一学期数算课上学习。
最后如果要再提供一些计概学习的建议的话,有几点几乎所有(过来)人都会同意:一是靠自学,网上有很多资料(b站视频、CSDN博客、知乎回答,乃至英文网站等等),对于初学者来说是很方便的,学习他人优秀代码是提升自己编程能力很重要的途径;二是多刷题多码代码,编程是一个技术活也是体力活,新手可能要从很多方面积累经验提升自己(例如其中也包括打字速度,快捷键使用不是)。
近期计算机干货内容,敬请期待:
python基本数据类型详解
C & C++输入输出问题全解
作者 | 苏鹏程
编辑 | 王浩瀚