面對算法問題怎麼辦??

  加入ACM校隊一個月了,可是感覺現在解決題目的時候仍然很喫力,而且思路比較混亂.今天在網上無意間看到了一篇文章

介紹計算機專業如何學習,頗有感觸,就把其中的一段轉載過來希望可以給自己啓發.不過文章出處突然忘了....


當遇到一個算法問題時,首先要知道自己以前有沒有處理過這種問題.如果見過,那麼你一般會順利地做出

來;如果沒見過,那麼考慮以下問題:
1. 問題是否是建立在某種已知的熟悉的數據結構(例如,二叉樹)上?如果不是,則要自己設計數據結構。
2. 問題所要求編寫的算法屬於以下哪種類型?(建立數據結構,修改數據結構,遍歷,查找,排序...)
3. 分析問題所要求編寫的算法的數學性質.是否具備遞歸特徵?(對於遞歸程序設計,只要設計出合理的參

數表以及遞歸結束的條件,則基本上大功告成.)
4. 繼續分析問題的數學本質.根據你以前的編程經驗,設想一種可能是可行的解決辦法,並證明這種解決

辦法的正確性.如果題目對算法有時空方面的要求,證明你的設想滿足其要求.一般的,時間效率和空間效

率難以兼得.有時必須通過建立輔助存儲的方法來節省時間.
5. 通過一段時間的分析,你對解決這個問題已經有了自己的一些思路.或者說,你已經可以用自然語言把

你的算法簡單描述出來.繼續驗證其正確性,努力發現其中的錯誤並找出解決辦法.在必要的時候(發現了

無法解決的矛盾),推翻自己的思路,從頭開始構思.
6. 確認你的思路可行以後,開始編寫程序.在編寫代碼的過程中,儘可能把各種問題考慮得詳細,周密.程

序應該具有良好的結構,並且在關鍵的地方配有註釋.
7. 舉一個例子,然後在紙上用筆執行你的程序,進一步驗證其正確性.當遇到與你的設想不符的情況時,分

析問題產生的原因是編程方面的問題還是算法思想本身有問題.
8. 如果程序通過了上述正確性驗證,那麼在將其進一步優化或簡化。

9. 撰寫思路分析,註釋.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章