依舊是字串處理,設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 將字...