動態規劃 經典問題

2021-10-06 02:12:59 字數 2506 閱讀 2431

今天記錄下自己所學的動態規劃知識點

有三枚硬幣 2,5,7 拼成27元

最少需要幾枚硬幣

我自己理解的動態規劃實操兩部曲

第一曲:定義初始條件

第二曲:迴圈操作 以及狀態方程定義

/**

我的第乙個動態規劃程式

題目資訊:

有三枚硬幣 2,5,7 拼成27元

最少需要幾枚硬幣

看到最少:一般用動態規劃求解

1.初始條件:f[0]=0;

2.轉移方程 f[27]=min

*/#include

#include

#include

using

namespace std;

intmain()

;for

(i=1

;i<=

27;i++)}

printf

("%d\n"

,f[i-1]

);}

給的m行n列的網路,有乙個機械人從左上角(0,0)出發,每一步

可以向下或者向右走一步,問有多少種不同的方式可以走到右下角

/**

題目:給定m行n列的網路,有乙個機械人從左上角(0,0)出發,每一步

可以向下或者向右走一步,問有多少種不同的方式可以走到右下角

*/#include

intmain()

}printf

("%d"

,f[m-1]

[n-1])

;return0;

}

動態規劃小結:

1.確定狀態

2.轉移方程

3.初始條件和邊界情況

4.計算順序

題目3:

給你乙個整數陣列 nums ,請你找出陣列中乘積最大的連續子陣列(該子陣列中至少包含乙個數字),並返回該子陣列所對應的乘積。

/**

乘積最大子串行

2,3,-2,4

乘積最大為6

-2,0,1

乘積最大為0

思路:設定兩個值 maxp,minp

因為maxp*number[i] 可能成為最小值

minp*number[i] 可能成為最大值

初始條件

邊界值轉移方程

maxp[i+1]=max(maxp[i]*number[i+1],minp[i]*number[i+1],number[i+1])

minp[i+1]=min(minp[i]*number[i+1],maxp[i]*number[i+1],number[i+1])

dp[i + 1] = max(dp[i], maxp[i + 1])

*/#include

#include

#include

using

namespace std;

intmul

(int number,

int n)

return p;

}int

main()

;int max=

mul(number,5)

;printf

("%d\n"

,max)

;return0;

}

題目4:連續子陣列的最大和

輸入乙個整型陣列,陣列裡有正數也有負數。陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。

要求時間複雜度為o(n)。

示例1:

輸入: nums =[-

2,1,

-3,4

,-1,

2,1,

-5,4

]輸出:

6解釋: 連續子陣列 [4,

-1,2

,1] 的和最大,為 6。

ac**:

/**

連續子陣列的最大和

輸入乙個整型陣列,陣列裡有正數也有負數。陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。

要求時間複雜度為o(n)。

輸入: nums = [-2,1,-3,4,-1,2,1,-5,4]

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

解決方案: */

#include

#include

#include

using

namespace std;

intmax_function

(int number,

int l)

return p;

}int

main()

;int m=

max_function

(number,9)

;printf

("%d\n"

,m);

return0;

}

動態規劃經典問題

from 實現在 維基百科對動態規劃的定義 動態規劃 英語 dynamic programming,簡稱dp 是一種在數學 電腦科學和經濟學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題 1 和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於...

動態規劃經典問題

子串 在給定的字串中選取連續的一段 子串行 可以不連續,但是要保證出現的順序與原字串相同 比如字串abcdefg abc既是子串又是子串行 acd只是子串行 一 最大連續子串行和 給定乙個整數序列a1,a2 an。求最大的連續的子串行的和。比如的最大連續子串行的和為5 3 1 1 2 萬能列舉?每次...

動態規劃經典問題

只是談談看題感悟而已,並沒有寫題,則跟不用說刷題了。在看了演算法競賽入門經典,也就是劉汝佳寫的那本 一 中動態規劃專題,理會甚多。動態規劃問題,一般可以看為dag問題的,有許多類動態規劃原來儲存的是bool 的true或false只需改一改題意就變成了,什麼保證什麼什麼情況下,什麼最大,什麼最小的問...