对这个算法的原有印象就是非常难理解,而且怎么都感觉这个算法名称有些误导;或者是要引申着看?因为里面的动态是怎么个动态?
这里的动态是指每一次的计算结果会影响下一次,或者再次的运算效率,也就是说下一次的运算已经被上一次的计算影响,在计算的过程上发生了改动;所以才叫:“dynamic” programming;这里的后一个单词是programming,为什么要翻译为动态规划?在计算机里programming的一般意思是编程。但是也要看它的二般意思:规划,计划;
这样这个算法,至少在名称上已经好理解了。
这个算法的本质是根据题目先设计出一张表来记录每一次的计算结果;不管这张表是一维的还是二维,三维,四维,总之是要记录下来,以便再次(注意不一定只有下一次用)。
因为在这张表的基础上运算速度大大提升!因为已有的结果不用再重新从头再来一次!算是有了记忆!
感觉这个算法是不是叫:有记忆的算法更好一点?