動態規劃經典問題之字串最少修改次數

2021-10-07 22:29:04 字數 559 閱讀 2496

依舊是字串處理,設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種:

1.刪除乙個字元;

2.插入乙個字元;

3.將乙個字元改為另乙個字元。

對任給的兩個字串a和b,計算出將字串a變換為字串b所用的最少字元操作次數。

輸入舉例:

sfdxbqw

gfdgw

輸出舉例:

4解法見:

由矩陣中第一列的字串得到第一行的字串

得到矩陣的**為:

int matrix = new int[str1.length()+1][str2.length()+1];

matrix[0][0] = 0;

for(int i = 1;i其中:

新增:dis[i][j] = 1 + dis[i][j-1];

刪除:dis[i][j] = 1 + dis[i-1][j]

替換:dis[i][j] = 1 + dis[i-1][j-1];

若兩字元相同,則:dis[i][j] = dis[i-1][j-1]

動態規劃 字串交叉問題

給出三個佇列 s1,s2,s3 判斷 s3 是否是由 s1 和 s2 交叉得來。如 s1 為 aabcc s2 為 dbbca。當 s3 為 aadbbcbcac 時,返回 true 即將 s1 拆成三部分 aa,bc,c 分別插入 s2 對應位置 否則返回 false。aabcc,dbbca,aa...

動態規劃之字串拆分

某種字串處理語言允許程式設計師將乙個字串拆分為兩段。由於此操作需要複製字串,因此要花費n個時間單位來將乙個n個字元的字串拆為兩段。假定乙個程式設計師希望將乙個字串拆分為多段,拆分的順序會影響所花費的總時間。例如,假定這個程式設計師希望將乙個20個字元的字串在第2個,第8個以及第10個字元後進行拆分 ...

動態規劃之用最少的字元操作將字串A轉換為字串B

1.試用動態規劃演算法實現下列問題 設a和b是兩個字串。我們要用最少的字元操作,將字串a轉換為字串b,這裡所說的字元操作包括 1 刪除乙個字元。2 插入乙個字元。3 將乙個字元改為另乙個字元。請寫出該演算法 1 include 2 include 3 using namespace std 4 將字...