最小編輯代價
題目描述
給定兩個字串str1和str2,再給定三個整數ic,dc和rc,分別代表插入、刪除和替換一個字元的代價,請輸出將str1編輯成str2的最小代價。
輸入描述:
輸出三行,第一行和第二行均為一行字串,分別表示兩個字串str1,str2。\left( 1\leq length(str1),length(str2) \leq 5000 \right)(1≤length(str1),length(str2)≤5000)。第三行為三個正整數,代表ic,dc和rc。(1<=ic<=10000、1<=dc<=10000、1<=rc<=10000)
輸出描述:
輸出一個整數,表示編輯的最小代價。
示例1
輸入
abc adc 5 3 2
輸出
2
示例2
輸入
abc adc 5 3 100
輸出
8
示例3
輸入
abc abc 5 3 2
輸出
0
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int minCost(string s1, string s2, int ic, int dc, int rc){
if(s1.empty() || s2.empty())
return 0;
int len1=s1.length();
int len2=s2.length();
vector<vector<int> > dp(len1+1, vector<int>(len2+1, 0));
for(int i=1;i<=len1;++i){
dp[i][0]=i*dc;
}
for(int i=1;i<=len2;++i){
dp[0][i]=i*ic;
}
for(int i=1;i<=len1;++i){
for(int j=1;j<=len2;++j){
if(s1[i-1]==s2[j-1]){
dp[i][j]=dp[i-1][j-1];
}else{
dp[i][j]=dp[i-1][j-1]+rc;
}
dp[i][j]=min(dp[i][j],dp[i][j-1]+ic);
dp[i][j]=min(dp[i][j],dp[i-1][j]+dc);
}
}
return dp[len1][len2];
}
int main(){
string str1, str2;
cin>>str1>>str2;
int ic, dc, rc;
cin>>ic>>dc>>rc;
cout<<minCost(str1, str2, ic, dc, rc)<<endl;
return 0;
}
空間壓縮
待填
相關文章
- 最小連通代價
- PureBasic 現代 BASIC 程式語言編輯器
- 【機器學習】【邏輯迴歸】代價函式為什麼用最大似然估計而不是最小二乘法?機器學習邏輯迴歸函式
- 編輯
- 現代和直觀的終端文字編輯器:Micro
- Shift+Click,編輯[...],如編輯圖片
- 增強 Vim 編輯器,提高編輯效率
- 現代富文字編輯器Quill的內容渲染機制UI
- 編輯了
- 文件編輯
- 隨處可編輯的編輯器之神VIM
- 最小許可權的容器編排
- 編輯距離及編輯距離演算法演算法
- 保供應、穩就業的民生行業最需精準防疫:以最小代價實現最大效果就業行業
- HTML 編輯器HTML
- vim編輯器
- CRISPR基因編輯
- XML 編輯器XML
- linux編輯器Linux
- Markdown編輯器
- css文字編輯CSS
- LaTeX 公式編輯公式
- 突破創意邊界,Premiere Pro 2024引領影片編輯新時代REM
- Jetbrains正在開發下一代編輯器,對標VS CodeAI
- 部落格編輯makedown的學習(typora編輯器使用)
- Hetao P2071 打字遊戲 題解 [ 綠 ] [ 最小生成樹 ] [ 動態規劃 ] [ 編輯距離 ]遊戲動態規劃
- Mac——免費的音樂編輯軟、影片編輯軟體。Mac
- vim 編輯報錯導致無法正常退出和編輯
- 專業的視訊編輯工具:視訊編輯軟體
- Word_共享編輯
- 使用vscode編輯markdownVSCode
- hgdb資料編輯
- Filament Markdown 編輯器
- 【DP】編輯距離
- Nano編輯器常用NaN
- 12 vi編輯器
- PilotEdit 16,文字編輯
- vim 列編輯模式模式