个人简介:
邓子谦,中共党员。现任信息191班班长兼团支书,信息工程本科生第一党支部组织委员,曾任武术擂台及旅游机器人(ATR)团队队长。获得三好学生、优秀学生一等奖学金等荣誉称号以及十一届蓝桥杯大赛北京赛区一等奖等。
竞赛简介:
蓝桥杯全国软件和信息技术专业人才大赛,是由工业和信息化部人才交流中心举办的全国性IT学科赛事,是高校教育教学改革和创新人才培养的重要竞赛项目。
Q1.参加这项比赛需要哪些方面的知识?
D1:就C/C++程序设计这一科目来说,需要掌握C或者C++基础语法,了解常见的数据结构及其遍历实现。算法方面主要考查枚举、排序、搜索、计算几何、字符串处理、动态规划、贪心等。竞赛侧重考查选手对于算法和数据结构的灵活运用能力,很多试题需要使用特定算法才能在给定的时间和内存限制下得到有效的解决。参赛选手机器环境为Dev-cpp,赛前需要适应该开发环境,熟练掌握该环境下的调试方法。其中值得注意的是Dev-cpp进行调试时,数组在变量监测窗口中显示的是首地址,需要掌握添加查看数组内容的方法。
Q2.参赛过程中感觉自己能力不足该如何处理?
D2:我是大一寒假报名参加的,当时只有C语言程序设计的课程基础,对于算法方面的知识有所欠缺,于是在假期学习了部分历届真题的讲解,并且上手刷了部分近年真题,解题速度也有所提升。推荐搭配dotcpp使用官方练习系统,该网站题库涵盖了官方试题集(包括VIP试题),且可以参考他人题解以及解题思路,优化自己的解题方法。
Q3.参赛过程中最令你难忘的是什么?
D3:刚进行算法学习接触的是递归算法,用了一下午才解决八皇后问题,也是这个时候对递归和回溯的理解得以加深。在之后ATR团队参加的华北五省大学生机器人大赛中,提交作品《递归回溯算法在智慧快递中的应用》,获得了二等奖。
Q4.参加这项比赛你觉得最重要的是什么?
D4:1.学习数据结构与算法对大部分人来说是一件很枯燥的事情,做到坚持和自律也很难,有一两个队友一起学习、一起刷题,可以互相督促互相鼓励。
2.盲目的刷题很容易给自己带来挫败感,刷历届真题前可以给自己制定一个学习路线。比如把官方试题集的基础练习刷完,对该项比赛考察内容和考查形式有所了解。再分算法(参考他人整理的ACM入门刷题顺序)了解其原理和应用,辅以几道真题进行巩固,并做好注释和思路说明以便后续回顾。
3.算法是学不完的,有些数据结构或算法学习成本比较大,但考察频率比较低,一段时间不接触又很容易遗忘,对于非科班选手来说没必要硬磕。刷题后要对做过的练习进行分类整理,常用的解题思路要融会贯通,将所学、所刷的题有个小的体系概念。
Q5.能给大家一些什么建议吗?
D5:前面的回答已经提到了不少建议,这里再针对时间已经不太充裕的情况下,该如何准备提一些建议。
1.整理近年真题高频考点,例如日期区间计算、字符串处理、常见动态规划、贪心、搜索等算法,把他们记录下来按频率排个序,进行针对性训练。
2.试题中有不少送分题,通常出现在结果填空题和编程大题前几道,近几年考察内容也很相似,可以拿往届试题刷一刷,务必拿稳。
3.比赛时合理安排时间,代码量大和逻辑复杂的放在后面。结果填空题只要求填写最终的结果,简单的可以通过手算或Excel等方法解决,复杂的可以通过编程暴力枚举。编程大题先评估下用例规模,有些可以通过全部评估用例的算法如果不熟悉,可以针对测试用例用搜索、枚举等方法拿到尽量多的分。
4.对于各类竞赛不要有畏难情绪,更不要因为觉得这项比赛含金量不高不愿意参加。那些认可度高的比赛对于我们普通人来说,可能连入围的机会都没有,而参加这项比赛,只要有一定准备,拿一个好点的奖项并不难,也可以检验自身的学习情况。参加各类竞赛,大部分都能够给自己带来全方位、多层次的提高,尤其是团体参与。比如我们学院的各种机器人团队,会收获很多课堂上学不到的技能,而这些技能往往是未来不可或缺的。这样一来,成绩也就不重要了,权当学习体验的过程。