在线编程挑战赛第一名:我是这么学算法的

在线编程挑战赛第一名:我是这么学算法的


摘要:钟润兴,北科大大三学生,CSDN高校俱乐部在线编程挑战赛总排行榜第一名,25题通过率100%。谈到他学算法的心得,他说自己学东西就是采用“一个强度比较大的集中的时间+一个长度稍微大的巩固练手”这样的方式。

钟润兴,北京科技大学学生。说起要采访,钟润兴自嘲说:“我不是你所想象的那种学霸,也不是特别突出的人,唯一两次觉得特自豪的事情还是高二的时候用了二十几天背了3000多个单词,还有就是复读那年的高考分数高出前一年一百多分。”就是这个觉得自己没有什么光辉史的学生,在CSDN举办的高校俱乐部编程挑战赛拿到总排行第一名的成绩,25题通过率为100%。


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

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

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

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

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

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

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

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值