贪心,递推,动态规划,这三种算法思想都是很难掌握的。因为没有死板的公式和套路的代码,只能通过日常的学习和思考,去不断加深自己对这类题目的敏感度和熟练度,提高自己的思维能力,才能对这类题目游刃有余。
深山三十年,最终习得一身的内功。眼望之处,再无敌手。
贪心算法,也就是三大步:
1. 最优解情况的证明
2. 贪心策略的制订
3. 数据的预处理过程。
大家如果接触过20+的贪心题目,就会发现大多数的题目都需要对数据进行一系列的预处理。最基本的也是排序,复杂点的就像上一篇中的进行数学计算。预处理策略的制订,关系着后面贪心策略的代码复杂度,也影响着程序的出错几率。
最优解的证明过程,这个关系着整个程序的正确与否,至关重要。如果接触的题目比较简单,那么最优解的证明也就是几句话便可以证明清楚。但是这一环不能缺失,如果不能证明最优解的有效性,那么贪心策略的制订就毫无意义。
但是…… 这个真的不好做,因为很多人在”做出一道题“和”证明这道题就该这么做“这两个阶段中间。很多时候都是做出了题目,问及题解却张口结舌,最终只能回答一句”额,题做得多了你就明白了“。推理论证是很严谨的,如果能在这个方面多进行练习,那么对于日后算法功底的精进很有帮助。个人真的推荐写题解,写解题报告,提升的比单纯做题快很多。这是一代又一代人的教训,还是接受比较好……
贪心策略的制订,这个多说无益,因为每道题目的贪心策略都可能不一样,死记硬背不会有好结果的~~ 这就只能练习练习练习,演算演算演算
我个人把贪心算法叫做小动规,因为基本思路类似,如果贪心题目做得多,那么动态规划的学习也会变得很容易。但是这样叫也不妥,因为贪心和动规的求解方向是相反的,贪心是从前往后推,动规是从后往前推~~ 不过也差不多,因为动规的题目是要比贪心的题目厚重得多…… 额,算啦,这个问题也不重要
其实上面都是些废话,但是算法这个东西本来就是功在平时,而且贪心又是见招拆招的打法,一个小结也只能写写这些了 _(:зゝ∠)_
算法路漫漫,如若懈怠荒废,便只落得虚度光阴,少年白头,勉强度日。
不如日日勤勉,苦修三年,习得一身武功,闯荡天下,一生戎马。
对呀对呀,我就是中二病,你咬我呀! ( ̄_, ̄ )