題目描述
給出兩個單詞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 初始化時除...