1.動態規劃演算法
在解決最優解時我們用到的兩個演算法,貪心與動態規劃演算法,接下來我根據自己的理解解釋兩者的差異之處。
貪心會怎樣做,動態規劃又會怎樣做?
我的了解,貪心演算法是自頂向下,及每一步向下都取最大值,但得到的是最優解嗎?如圖顯然不是。接下來我會逐一跟大家演示。
動態規劃解法,從小規模來看是否知道動態規劃的解題機制,如果你認為是從上往下加取最大那你就錯了。
如果是這個結果呢,1走2,2只能走1,如果還是這樣從上往下我們得不到最優解,
這就是他們的直接問題。自頂向下,與自底向上。顯然自頂向下的貪心演算法顯然得不到最優解。
#include
#include
#include
using namespace std;
#define maxlen 100
int angle[maxlen]
[maxlen]
;int sum[maxlen]
[maxlen]
;int n;
intmaxsum
(int i,
int j)
return sum[i]
[j];
}int
main()
貪心演算法 and 動態規劃
動態規劃dynamic programming 貪心演算法,又名貪婪法,是尋找最優解問題的常用方法 步驟1 從某個初始解出發 步驟2 採用迭代的過程,當可以向目標前進一步時,就根據區域性最優策略,得到一部分解,縮小問題規模 步驟3 將所有解綜合起來。假設你開了間小店,不能電子支付,錢櫃裡的貨幣只有 ...
動態規劃和貪心演算法
動態規劃 通過組合子問題的解來求解原問題,常用來求解最優化問題。常用來解決以下幾類問題,但不是說遇到類似問題必須用動態規劃來解決,可以往這方面去想 1.計數問題,如有多少種方式走到右下角,有多少種方法選出k個數使得和是sum 2.求最大最小值,如從左上角走到右下角路徑的最大數字和 3.求存在性,如取...
貪心演算法和動態規劃
貪心演算法 在求解問題時,總是做出在當前看來做好的選擇,所以它是區域性最優解,試圖通過區域性最優推出全域性最優。需要注意的是貪心演算法沒有固定的演算法框架,演算法設計的關鍵是選擇貪心策略,其必須具備無後效性,即某個狀態以後的過程不會影響以前的狀態,只與當前狀態有關。常見的用貪心演算法解決的問題,比如...