目錄演算法評價
使用程式解決乙個問題的一般步驟是分析問題,然後進行數學建模,再然後程式實現。那麼程式思想的核心是什麼呢?
演算法+資料結構+程式語言
順推法從一種已知條件推導結果。
逆推法從已知結果推到成初始化條件。
遍歷每一種可能。
什麼是遞迴?程式直接或間接的呼叫自身。
將乙個大的問題分解成n個小的且相同的問題,並將小問題的解合併成乙個最終問題的解。
貪婪思想總能做出當前看來最好的選擇,它一般不能達到最終結果的最優解,但是能夠近似達到最優解。比如像找零錢問題。
回溯思想是一步步試探前進,當不能前進的時候回到上一步繼續試探,如果還是沒有繼續回退,以此類推,直到找到解或者無解。
如何評價乙個演算法的好壞,主要從如下四個方面去看。
正確性(基本要求)
高效性(時間複雜度)
空間性(空間複雜度)
可讀性(便於程式設計師之間溝通)
常用演算法思想
窮舉演算法是一種最簡單的演算法,其依賴於計算機的強大計算能力,來窮盡每一種可能的情況,從而達到求解問題的目的。窮舉演算法效率並不高,但是適合於一些沒有明顯規律可循的場合。在使用窮舉演算法時,要明確問題的大難的範圍,這樣才可以在指定範圍內搜尋答案。最簡單的例子 雞兔同籠 在乙個籠子裡關注數隻雞和兔,共...
演算法思想 滑動視窗思想
在解leetcode題的時候,遇到了幾個新的演算法思想,這個系列文章就把leetcode中的一些演算法思想做一些整理,包括老生常談的動態規劃,也包括我最新接觸的滑動視窗思想,並查集等,另外,遇到新的題目的時候也會在這裡做一些整理。起源 計算機網路協議 在介紹滑動視窗思想之前,首先介紹這個演算法思想的...
演算法思想 分治演算法
分而治之 大問題能夠拆成相似的小問題,記住這些小問題需要具有相似性。而後將小問題的每個解合成為大問題的解。所以說大問題如何拆,小問題如何合併才是這個演算法最主要的乙個思想。實際上很多演算法如貪心演算法,動態規劃等等都是要求把大問題拆成小問題。而分治演算法的重要一點就是要適用於能夠重新把小問題的解合併...