動態規劃練習

2022-02-25 10:34:58 字數 840 閱讀 6225

題目描述

給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。
你總共三種操作方法:
插入乙個字元

刪除乙個字元

替換乙個字元

#include #include 

#include

using

namespace

std;

int find_min(int x, int y, int

z)

if (z return

min;

}int

main()

for (int i = 1; i <= n; i++)

/*state[i][j]表示字串s2的前i個字元組成的子串和字串s1

*前j個字元組成的子串修改為相同要操作的最少次數

* 如果當前兩字元相同:則不作任何操作;繼承上次操作的最優解

* 如果當前字串不同:

* 如果是插入當前s2[i-1]字元,則state[i - 1][j]+1;

* 如果是刪除當前s2[i-1]字元, 則state[i][j - 1]+1;

* 如果是替換當前s2[i-1]字元, 則state[i][j]+1;

*為了保證子結構最憂,取三者的最小值

*/for (int i = 1; i <= n; i++)

else}}

cout

<< state[n][m]

"pause");

return0;

}

動態規劃練習

題目描述 蘋果裝配問題,把乙個區域分成n m個小區域,其中每個區域有一定數量的蘋果,設左上角為0,0,右下角為n 1,m 1.從0,0開始出發,每經過乙個區域,就把該區域的蘋果全部收走,求一條路徑使得收穫的蘋果最多。include include using namespace std class ...

動態規劃練習

1 問題描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。例 台階n 0 輸出 0 台階n 2 輸出 2 台階n 3 輸出 3 台階n 4 輸出 5 台階n 7 輸出 21 int step int a return b a int main cout ...

動態規劃練習 採藥

題目要求 採每一株藥都需要一些時間,每一株也有它自身的價值。一段時間內,可以採到一些草藥。在規定時間內讓採到的草藥的總價值最大。題目思路 此題為01揹包問題,令b i t 表示前i株藥材恰在t時間內採完獲得醉的價值,狀態轉移方程 b i t max 細節處理 進行空間優化 b t max 初始化時除...