洛谷 1279 字串距離
題目描述
設有字串X,我們稱在X的頭尾及中間插入任意多個空格後構成的新字串為X的擴充套件串,如字串X為”abcbcd”,則字串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的擴充套件串,這裡“□”代表空格字元。
如果A1是字串A的擴充套件串,B1是字串B的擴充套件串,A1與B1具有相同的長度,那麼我捫定義字串A1與B1的距離為相應位置上的字元的距離總和,而兩個非空格字元的距離定義為它們的ASCII碼的差的絕對值,而空格字元與其他任意字元之間的距離為已知的定值K,空格字元與空格字元的距離為0。在字串A、B的所有擴充套件串中,必定存在兩個等長的擴充套件串A1、B1,使得A1與B1之間的距離達到最小,我們將這一距離定義為字串A、B的距離。
請你寫一個程式,求出字串A、B的距離。
輸入輸出格式
輸入格式:
輸入檔案第一行為字串A,第二行為字串B。A、B均由小寫字母組成且長度均不超過2000。第三行為一個整數K(1≤K≤100),表示空格與其他字元的距離。
輸出格式:
輸出檔案僅一行包含一個整數,表示所求得字串A、B的距離。
輸入輸出樣例
輸入樣例#1:
cmc snmn 2輸出樣例#1:
10這個 題 需要預處理
#include<bits/stdc++.h>
#include<vector>
using namespace std;
string a,b;
int k;
int dp[10001][10001];
int main(){
cin>>a>>b>>k;
int lena=a.size();
int lenb=b.size();
for(int j=1;j<=lena;j++){
dp[j][0]=j*k; //
}
for(int j=1;j<=lenb;j++){
dp[0][j]=j*k;
} // 預處理 當他們所有的碰見的都是空格的時候
for(int j=1;j<=lena;j++){
for(int i=1;i<=lenb;i++){
int t=abs(a[j-1]-b[i-1]); //ASCII 差值
dp[j][i]=min(min(dp[j-1][i],dp[j][i-1])+k,dp[j-1][i-1]+t); //第第一個取j個單詞 到第 二 個取 i 個單詞的最優解
}
}
cout<<dp[lena][lenb]<<endl;
return 0;
}
相關文章
- 洛谷題單指南-字串-Test字串
- 洛谷
- Levenshtein:計算字串的編輯距離字串
- 洛谷P11361 [NOIP2024] 編輯字串字串
- 洛谷 P4173 殘缺的字串 卡常小記字串
- 洛谷題單指南-集合-P3370 【模板】字串雜湊字串
- 卡特蘭數 洛谷P1641 [SCOI2010]生成字串字串
- 洛谷題單指南-字串-P4735 最大異或和字串
- 洛谷團隊
- 馬氏距離與歐氏距離
- 洛谷P1098 [NOIP2007 提高組] 字串的展開字串
- 【Python】距離Python
- 洛谷——玩具謎題
- 英雄聯盟(洛谷)
- 洛谷P1786
- 洛谷P6786
- 洛谷 - P5369
- 洛谷P10725
- 洛谷P10693
- 洛谷 - P6190
- 洛谷死亡時間
- JavaScript 元素距離視窗頂部的距離JavaScript
- 編輯距離及編輯距離演算法演算法
- 曼哈頓距離與切比雪夫距離
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- 洛谷八皇后問題
- 洛谷 P10254 口吃
- 洛谷傻逼之處
- 洛谷 P3958乳酪
- 昨天放洛谷的圖
- 將洛谷私信接入WindowsWindows
- 洛谷網校學習
- 【洛谷】【分支】月份天數
- Laravel 距離排序Laravel排序
- unit原子距離
- 餘弦距離
- 馬氏距離
- 簡單的模擬(洛谷)