LeetCode72 編輯距離

2021-10-04 13:54:47 字數 680 閱讀 2695

動態規劃令人迷茫?

看了網上許多有關狀態轉移方程的解讀,私以為並沒有真正揭示出這樣做的理由。

為什麼dp[i][j]只需要考慮從dp[i-1][j],dp[i][j-1]和dp[i-1][j-1]這三者轉移而來,個人認為其原因在於,這只是在考慮僅通過「一次操作」得到dp[i][j]的遞推公式。至於計算dp[i][j]的過程中為何不用考慮dp[i-2][j],dp[i][j-2]等等?因為它們都是需要經過兩步操作及以上才能轉移到dp[i][j]的情況,最優解已經包含在上述討論的三種情況之中了。這也符合動態規劃最優子結構的原則。

class

solution

for(

int i=

0;i<=len2;i++

)for

(int i=

1;i<=len1;i++

)else

dp[i]

[j]=

min(dp[i-1]

[j],dp[i]

[j-1])

; dp[i]

[j]=

min(dp[i]

[j],dp[i-1]

[j-1])

+1;}

}return dp[len1]

[len2];}

};

Leetcode 72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...

leetcode 72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...

LeetCode72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r rorse rose 刪除 r rose ...