学习2周C++的收获
首先,C++是一种实用性很强的程序设计语言。它使用起来灵活、方便,运算符丰富,有结构化的层次……
那么,我学习这个语言主要是为了参加信息学奥林匹克竞赛,这不仅要熟练地掌握一门语言,还要灵活地运用一些算法。在学习的过程中,这也使我们的思维更加活跃,解题能力大大提升。
第一天,我们了解了一些简单的C++语言程序的实例,学习了一些运算符,如何定义变量……学会了用计算机来解决简单的数学题,这一天算是收获满满,因为学的知识偏多一些。
再到后面,基本是一天一个模块 (算法?)
第二天老师讲的if和switch,第三天讲的循环结构,第四天讲的数组,第五天讲的字符串,第六天讲函数……
再到后面我们一天学一个基础算法。(高精度,排序,贪心,分治,递推,递归,搜索,动态规划……)
在这期间我们还学了学栈、队列、树。
临放假这几天我们学了图论(存储,最短路径,并查集……)
学了这么多的知识,在算法(有些可能不算)方面,我个人觉得排序,搜索,动态规划很重要。
- 排序有好多题都用的到,sort、归并排序比较快,可以节省时间。
- 搜索的话,有些题目可以爆搜骗分(虽然我还没有体验过) ,用它也可以解决一些没有特定的计算法则的问题(走迷宫等等)
- 动态规划可以用来解决一些关于最优化的问题,这是一种解决问题的方法,不算是一种特殊算法,但它很重要
其它的,比如贪心算法,分治算法,他们的基本思路都很明确。贪心是在满足无后效性的前提下,把局部最优策略合成原来问题的最优解。分治是将一些较大规模的问题分解成几个较小规模的,通过对较小规模问题的求解以达到对整个问题的求解。
但是,对于目前的我来说,我很难把它们在代码上体现出来。虽然我懂得思路,但是面对各种各样的题,灵活运用这些算法是我目前的短板。遇到一些题我常常没有思路,直到看到题解的时候才恍然大悟……所以以后我要攻克这个困难,这需要我不断刷题,找找经验;我也要多看看书,从书中再落实一些基础知识。
在今后的学习中,我应该多刷一些关于算法的题,也要继续往后学习其他的知识。大家一起学习,共同进步。希望在以后我和同学们都能齐心协力,共创辉煌。