关于算法的思考

算法出现的比计算机要早很多:比如说 最大公约数(Greatest common divisor 简写为GCD)的求法,早在

公元前300年出版的《几何原本》中已经有算法,至今仍然是很实用的方法.

算法我之见

我的看法就是求解某类或者某个问题的固定方法:按照方法做就一定能在有限的时间内得到结果.
算法要理解必须有自己的思路,否则当时学会或者记住了,过一阵子就会忘记(记忆天才除外吧).

算法学习/推导的过程

把自己思路教给计算机,使用计算机的语言准确描述描述。
将你的想法交给计算机去执行,首先要了解一个算法手动是怎样计算的,

手动推演两到三步然后归纳出规律,使用while和if将你的想法写出来伪代码(伪代码甚至可以有一些逻辑错误),
有一点小错误,不要紧,
然后开始将伪代码转为C++代码,调试各种特殊情况和一般情况(测试)
最后自己的(烂)算法大功告成,进行优化和分析确保逻辑上不会有大漏洞

推演的技巧

可以从简单的情况入手,尝试解决问题保证自己理解了算法的需求背景,

特殊推导一般(情形越特殊越简单,高中数学老师讲的),代码中可能有专门用于特殊情况处理的if分支可以考虑
是否可以用一般涵盖特殊;