簡單dp動態規劃問題之最大的不相鄰和

2021-10-23 05:30:58 字數 537 閱讀 6252

#include

#include

using

namespace std;

/**尋找不相鄰的數的最大和 如4 1 1 9 3 最大值為4+9=13

用dp陣列來表示dp[i] 為到第i個為止 最大和是多少

狀態轉移方程為

要麼選擇第i個 則

值為第i個的值+dp[i-2] 表示到達第i-2個為止最大的和 因為第i-2才是與第i個不相鄰的

要麼不選第i個 則最大為dp[i-1] 到達第i個的前乙個可能的最大值和

*/int a[

100]

;int dp[

100]

;int

main

(void)

dp[0]

=0; dp[1]

=a[1];

for(

int i=

2;i<=n;i++)

cout<

}

動態規劃之最大K乘積問題

設i是乙個n位十進位制整數。如果將i劃分為k段,則可得到k個整數。這k個整數的乘積稱為i的乙個k乘積。試設計乙個演算法,對於給定的i和k,求出i的最大k乘積。例如十進位制整數 1234 劃分為 3 段可有如下情形 1 2 34 68 1 23 4 92 12 3 4 144 證明滿足最優性原理 假設...

動態規劃之最大子段和問題

問題描述 給定由n個整數 包含負整數 組成的序列a1,a2,an,求該序列子段和的最大值。當所有整數均為負值時定義其最大子段和為0。依此定義,所求的最優值為 例如,當 a1,a2 a3 a4 a5 a6 2,11,4,13,5,2 時,最大子段和為 11 4 13 20 1 最大子段和問題的簡單演算...

動態規劃之最大子段和問題

有一由n個整數組成的序列a 求該序列如 a i a i 1 a j 的子段和的最大值。如果序列中全部是負數則最大子段和為0,依此定義,所求的最優值max,1 i j n。輸入 n 序列的長度 序列值輸出 最大子段和 例如 輸入 6 2,11,4,13,5,2 輸出 20演算法可通過動態規劃求解 我們...