學習編程算法應該從兩個方面思考自己掌握的程度
================================================
1.已經知道了怎麼寫,最快無誤的把這個“知道”變成代碼的能力
這個能力主要用寫過的自創成功的代碼量來衡量
主要是
一遍正確的能力
疲勞狀態下找錯能力
知道自己寫過的程序是否含有錯誤的能力
================================================
2.遇到問題,能想出 用程序的方法 解決這個問題 的算法 的能力
這個能力的提高主要靠學習算法問題來提高
下面來詳細解釋一下如何“學習算法問題”
他有三個等級
(1)會解決這個問題了
如含多層括號的+-*/表達式求值
記住“含開頭結尾符#的符號大小記錄”和“一個數棧一個符棧”這個問題你就會了
(2)會這個算法方法了
這裏的算法方法指:如-棧思想,動態規劃思想
通過多遇到幾個可以用這種算法方法解決的問題來提高
(3)會創造這個算法了
比如遇到了一個問題
這個問題所需要的算法沒有前人遇到過
那就需要這種能力了
怎樣提高?
學習表達式求值問題的時候
思考前人是怎麼從這個問題抽象出解決方法的
思考方法:
先考慮問題最困難形式:如1+1*(2+2*3+(1+1))*2
取問題最簡單形式:如1+1*2
尋找解決思路1:先搜索等級最高的()然後從左到右計算,再計算*,再計算+
結果不適應最苦難形式問題
尋找解決思路2:+是否執行由+和+後面的符號的優先級決定(可行)
若不可解決最苦難問題,再次從最簡單問題帶上失敗原因來思考新方法