版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18525953/article/details/62227937
学习编程算法应该从两个方面思考自己掌握的程度
================================================
1.已经知道了怎么写,最快无误的把这个“知道”变成代码的能力
这个能力主要用写过的自创成功的代码量来衡量
主要是
一遍正确的能力
疲劳状态下找错能力
知道自己写过的程序是否含有错误的能力
================================================
2.遇到问题,能想出 用程序的方法 解决这个问题 的算法 的能力
这个能力的提高主要靠学习算法问题来提高
下面来详细解释一下如何“学习算法问题”
他有三个等级
(1)会解决这个问题了
如含多层括号的+-*/表达式求值
记住“含开头结尾符#的符号大小记录”和“一个数栈一个符栈”这个问题你就会了
(2)会这个算法方法了
这里的算法方法指:如-栈思想,动态规划思想
通过多遇到几个可以用这种算法方法解决的问题来提高
(3)会创造这个算法了
比如遇到了一个问题
这个问题所需要的算法没有前人遇到过
那就需要这种能力了
怎样提高?
学习表达式求值问题的时候
思考前人是怎么从这个问题抽象出解决方法的
思考方法:
先考虑问题最困难形式:如1+1*(2+2*3+(1+1))*2
取问题最简单形式:如1+1*2
寻找解决思路1:先搜索等级最高的()然后从左到右计算,再计算*,再计算+
结果不适应最苦难形式问题
寻找解决思路2:+是否执行由+和+后面的符号的优先级决定(可行)
若不可解决最苦难问题,再次从最简单问题带上失败原因来思考新方法