直接演算法 動態規劃演算法求解最大子段和

2021-08-11 07:28:35 字數 924 閱讀 5580

問題介紹:

在乙個有限序列,任意連續的序列的和的最大值,記為最大子段和。

直接演算法:

確切的說是改進後的直接演算法,時間複雜度是o(n^2)

動態規劃演算法

規定當子段和為負整數時,欄位和為0;

時間複雜度是o(n);

改進的直接演算法**:

/*

* 求最大子段和的原始版的改進版

* 時間複雜度o(n^2)

*/#include

using

namespace

std;

maxsubsum(int n ,int a, int &besti,int &bestj)}}

return sum;

}int main();

cout

<5,a,besti,bestj)<<"("

<","

<")"

0;}

動態規劃演算法**:

/*

*動態規劃求最大子段和

* besti,bestj記錄最大子段的開始下標和結束下標

* 時間複雜度o(n)

* */

#include

using

namespace

std;

maxsubsum(int n,int a,int &besti,int &bestj)

if(b>sum)

}return sum;

}int main();

cout

<5,a,besti,bestj)<" "

<}

演算法 動態規劃演算法

動態規劃法基本思想 將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。著名的應用例項有 求解最短路徑問題,揹包問題,專案管理,網路流優化等。個人對動態規劃的理解,主要就是避免重複計算。就是那些曾經發生過的事情,曾經計算過的值先儲存下來,然後再次遇到相同的子問題的時候,直接用儲存...

演算法 動態規劃演算法

動態規劃法基本思想 將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。著名的應用例項有 求解最短路徑問題,揹包問題,專案管理,網路流優化等。個人對動態規劃的理解,主要就是避免重複計算。就是那些曾經發生過的事情,曾經計算過的值先儲存下來,然後再次遇到相同的子問題的時候,直接用儲存...

演算法 動態規劃演算法

背 包問題 有乙個揹包,容量為 4磅 現有如下物品 物品 重量 吉他 g 1 1500 音響 s 4 3000 電腦 l 3 2000 1 要求達到的目標為裝入的揹包的總價值最大,並且重量不超出 2 要求裝入的物品不能重複 動態規劃的核心思想是把原來的問題分解成子問題進行求解,也就是分治的思想。但是...