#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</輸出的結果 即為到達第n個為止最大的和
}
動態規劃之最大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演算法可通過動態規劃求解 我們...