投递人 itwriter 发布于 2022-09-26 15:10 评论(0) 有261人阅读 原文链接 [收藏] « »

作者简介:一名双非本科大二网络工程专业在读,热衷编程,喜欢写作
@ TOC
技术上的成长路线
一、初识 C 语言

初步开始学习 C 语言是在高考结束那段时间,因为那时候比赛训练完脚受伤了,所以暑假哪儿也不能去玩,偶然间在 b 站上看到了鹏哥的视频,就点进去看了一会,发现 C 语言挺有意思的,高中那会儿学习的是 Visible Basic,基于对象的编程语言,只是听老师提起过 C 语言,但是没有去关注过,刚好我哥也是一家互联网公司的程序员,又给我提起过一些,种种环境的熏陶下,便开启了我的 C语言学习之路:walking:
鹏哥 yyds,梦开始的地方:cloud:

跟着鹏哥学习了分支判断、循环、函数、数组、结构体、指针等等,不得不说,鹏哥的视频是真的好长,每个视频都要看一两个小时才能看完,但看完之后真的收获蛮大的,因为鹏哥将的还是比较详细的,也有看过其他 up 主对于 C 语言的讲解,都没有鹏哥来的详细,要说讲的还可以的,就是 翁恺老师的C语言 吧,也是很不错的,在慕课和 b 站上都有
除了看视频之外,当然最重要的就是自己动手打代码和些一些小程序,而且一定要多刷题,才能对知识点掌握地更加透彻
二、ACMer 的养成记
在高考完就学习 C 语言的我,差不多到军训的时候也学的差不多了,当然是只是说掌握了一些基本的知识,看到学校的实验室的招新,我便去参加选拔并进入了 acm 实验室:school_satchel:

以为已经学习完 C 语言的我可以毫无压力地游走在实验室里,刚开始几周给的题目还不是很难,就是一些==二分查找、大数、快速幂、斐波那契、排序、简单 dp==等等,但是到后来,出现了一些感觉要很投入地学习才能搞明白的一些知识,==并查集、树、图、拓扑排序和搜索==,那段时间真是不想回忆,感觉蛮累的就是
但是经过一个学年的训练,我的能力也有了一些提升,在省赛和校赛也有了一些小成绩,但还是远远不够,所以我会继续努力学习算法:computer:

到了暑假,就开始暑期训练,学习到了很多高阶的算法看,像是==背包进阶、字典树、线段树、数论、博弈、模拟==,都是之前没怎么深入接触的知识,也是学起来很累,每天都是头脑风暴:ocean:,大概就是那种晚上回到寝室倒下去就能睡着那种,但真的让自己得到了很好的锻炼:muscle:
三、接触数据结构
首次接触数据结构的话是在大一上的寒假,因为刚好做到了有关栈和队列相关的问题,就开始系统地学习数据结构,==线性表、栈和队列、字符串、递归、树、图、查找排序等等==,大概是到三四月份才学完的,对计算机系统的这个内部数据的结构层次也有了一个很好地了解:mag:,不会像之前那样那样只是跟着系统地刷题而对这个知识点的底层架构不了解
课程的我是跟着黑马程序员学习的,相关书籍的话我看的是《数据结构和算法分析》和《算法图解》这两本书,淘宝上都有卖的,那时候还没有学习 C++,所以看的是 C 语言版的,C++/Java 版的话也是有卖的


有关数据结构的学习,总结一下就是,嗯......【蛮好的】,哈哈,从算法的时间/空间复杂度到到顺序以及链式存储方式,到链栈、链队,再到树和图,然后是各种排序方式,它们之间处处充满联系。
这门课的话我们这学期也是有开设,老师讲的蛮详细的,对于数据结构的重要地位,相信大家都很清楚,之前我也有做够一个投票,对于==数据结构、计算机网络、计算机组成原理、数据库系统概论、操作系统==这五门课,从投票结果来看,数据结构在大家心目中还是蛮重要的,**投票占比也是超过了 46.33%**,因为无论是在考研还是在面试中,都是重要考察的内容,所以大家在学习的时候还是要重点关注:key:

四、开始探索 C++
接下来说一说我在 C++ 这门编程语言的学习之路

C++这门课的话我们是大一第一学期开设的,因为寒假在学习数据结构,所以就没系统地去学 C++ 了,开课前只会 cin 和 cout,C++这们编程语言的话是包含了 C 的全部内容,只是增加一些面向对象的知识点,初次接触面向对象的编程语言,刚开始确实是不太适应,可能因为之前没有接触过,所以没有这个思想,但是在学习了一个多月后,就差不多适应了,类和对象的三大特性是封装、继承和多态,这也是 C++ 区别于 C 的一块部分,而且在 C++ 这一块的指针部分,感觉比 C 更加深入了一些,==指针常量、常量指针,指针数组、数组指针,指针函数、函数指针,除此之外还有对象指针==,幸好这些鹏哥在 C 语言里面也有讲到,所以就又回去看鹏哥的视频了,不得不说,鹏哥在指针这一块讲得太详细,简直让我膜拜,各种底层内存图和堆栈原理图,我也只是学习了它的一些皮毛而已
C++这门语言在我们 ACMer 中,最重要的应该就是 STL 了,这个的话我也有写过相应的博客,六大组件,容器、算法、迭代器,都是我们需要掌握的知识点,STL 在实际的做题过程中还是用的比较多的,像 vector 容器、deque 容器、pirority_queue 优先队列。

五、刷题艰难之路
接下来说说我在刷题上遇到的一些磨难与经历:innocent:
刷题方面的话大概就是我在 acm 的经历了,大体的过程在上面已经说过了,来说说一些不堪回首的小经历吧:cry:
记得刚开始学动 DP(动态规划)的时候,真的是非常崩溃,动态规划听起来就很厉害的样子,不过做起来真的是蛮难的,让我印象比较深刻的一题就是这个吧
登录后可查看完整内容,参与讨论!
立即登录