窮舉演算法是一種最簡單的演算法,其依賴於計算機的強大計算能力,來窮盡每一種可能的情況,從而達到求解問題的目的。窮舉演算法效率並不高,但是適合於一些沒有明顯規律可循的場合。在使用窮舉演算法時,要明確問題的大難的範圍,這樣才可以在指定範圍內搜尋答案。
最簡單的例子:雞兔同籠
在乙個籠子裡關注數隻雞和兔,共有35個頭,94隻腳,問:雞和兔各多少只?
package cyq1;
/**
* 雞兔同籠問題(窮舉演算法思想)
* 分析:可以判斷急的數量應該是在0到35只。這樣答案鎖定在了一定範圍內。
*/public
class
test_10 else
}static
int qiongju(int head,int feet)
}return re;
}}
遞推演算法是一種理性思維模式的代表,其根據已有的資料和關係,逐步推導而得到的結果。遞推演算法適合有著明顯公式的場合。
例子:斐波那契數列
package cyq1;
/**
* 遞推演算法思想
* 兔子序列(斐波那契數列)f(n)=f(n-2)+f(n-1),運用了遞迴公式來求解
*/public
class
test_11
//n表示時間
static
int getcount(int n)else
if (n>2) else
return
0; }
}
演算法常用思想
目錄演算法評價 使用程式解決乙個問題的一般步驟是分析問題,然後進行數學建模,再然後程式實現。那麼程式思想的核心是什麼呢?演算法 資料結構 程式語言 順推法從一種已知條件推導結果。逆推法從已知結果推到成初始化條件。遍歷每一種可能。什麼是遞迴?程式直接或間接的呼叫自身。將乙個大的問題分解成n個小的且相同...
演算法思想 滑動視窗思想
在解leetcode題的時候,遇到了幾個新的演算法思想,這個系列文章就把leetcode中的一些演算法思想做一些整理,包括老生常談的動態規劃,也包括我最新接觸的滑動視窗思想,並查集等,另外,遇到新的題目的時候也會在這裡做一些整理。起源 計算機網路協議 在介紹滑動視窗思想之前,首先介紹這個演算法思想的...
演算法思想 分治演算法
分而治之 大問題能夠拆成相似的小問題,記住這些小問題需要具有相似性。而後將小問題的每個解合成為大問題的解。所以說大問題如何拆,小問題如何合併才是這個演算法最主要的乙個思想。實際上很多演算法如貪心演算法,動態規劃等等都是要求把大問題拆成小問題。而分治演算法的重要一點就是要適用於能夠重新把小問題的解合併...