钟润兴谈自己学习算法的体会

来源:互联网 发布:预算软件破解 编辑:程序博客网 时间:2024/05/21 22:53

   算法对大多数人来说,很无聊,钟润兴也如此,他说自己刚开始兴趣点根本不在这里,特别是大一的时候,既看不懂,又没有兴趣。这种东西不容易形成分享,你说自己做了一个算法,跟别人展示一下,别人听着也觉得枯燥。

 他说,国外的小朋友一般都是从做小游戏开始的,所以一开始做有界面的程序很重要,它易于分享,做出来之后也比较有成就感,钟润兴自己对算法产生兴趣还是从做了一个下棋软件开始的。

“你知道,毛概那种课,大家也不听,然后就用来做软件”,到五一劳动节的时候,七天有六天都在开发软件,中途为了应付考试,停了两个月,最后拿了个二等奖,不过自己已经很满足了,因为大二才真正开始学编程,大一的时候修了C语言,只拿了六十几分,感觉什么也没学到,大一就过去了,做下棋软件的Java语言还是看了传智播客毕老师的视频教学课学的,大学以前唯一做的和计算机相关的事情就是打游戏。

因为做了下棋软件,再加上自己本来对数学感兴趣,所以从去年8月开始,参加了学校的ACM队,开始做题目,一开始大家采用的都是原始“暴力”解决方法,时间长了,学习了各种常用算法的解题方法,比如搜索、动态规划、高级数据结构等。

并且随着研究的深入,自己也开始关注如何优化算法的时间和空间复杂度,比如以前刚刚开始对于1个程序要求1秒3秒没有什么概念,对于内存要求也不清楚,但有一些数据得用特殊的数据结构存储,这样插入数据、删除数据才能更快,比如一个经典的约瑟夫问题,如果暴力模拟时间复杂度就是O(n^2),但是用了好的数据结构,那么复杂度可以达到O(nlg(n)),当n=1000的时候,就快了100倍。

对于训练强度,钟润兴说,自己不是保持每天做多少,而是采用“一个集中时间高强度地做一件事情+一个长度稍微大一点的巩固练手”这样的方式,按周期去练习,比如对CSDN的在线编程比赛,自己会连续集训一个月,以后只要巩固就可以了,毕竟题目数不清做不完,但只要知道常见的解法和题型就可以了,只要了解够了,就能领略到一些相通的东西。

当然,查看参考资料也很有必要,博客方面推荐CSDN的博客,书籍方面,《世界是数字的》这本书很不错,它抛开很多刻板理论,用很通俗的语言去介绍硬件、软件、网络、通信、编程等,虽然这本书并非专门针对算法,但对了解整个计算机世界很有帮助。另外刘汝佳的《算法竞赛入门经典》也很不错,对那些没有专门接受算法训练的学生很有帮助,在学完这本书并做了一定量题目之后,推荐《挑战程序设计竞赛》。

一般来说,编程算法得积累上100个小时才算开始进入正轨,现在学东西就像练内功,招数不要紧,关键内力要浑厚,内力积累到一定程度了,就好出招了。

0 0
原创粉丝点击