洛谷 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;
}
相關文章
- 洛谷P1852 奇怪的字串字串
- RQNOJ 514 字串距離:dp & 字串字串
- 計算字串編輯距離字串
- Vijos1680距離/openjudge2988計算字串的距離[DP]字串
- 洛谷 P4173 殘缺的字串 卡常小記字串
- 字串編輯距離問題詳解字串
- 洛谷傻逼之處
- 洛谷八皇后問題
- ACM HDU 1279 驗證角谷猜想(簡單水題)ACM
- 洛谷題單指南-集合-P3370 【模板】字串雜湊字串
- 洛谷 1057 傳球遊戲遊戲
- 洛谷 1781——宇宙總統(排序)排序
- 卡特蘭數 洛谷P1641 [SCOI2010]生成字串字串
- Mzc和男家丁的遊戲(洛谷)遊戲
- 1280 洛谷 尼克的任務
- 洛谷 P10254 口吃
- JavaScript 元素距離視窗頂部的距離JavaScript
- 【動態規劃】字串最小編輯距離Java實現動態規劃字串Java
- PostgreSQL遺傳學應用-矩陣相似距離計算(歐式距離,…XX距離)SQL矩陣
- 編輯距離及編輯距離演算法演算法
- JavaScript獲取元素距離文件頂部的距離JavaScript
- 洛谷T90444 密碼 題解密碼
- 「雜題亂刷」洛谷 P2572
- 洛谷-P2178 學習筆記筆記
- 洛谷 P1656 炸鐵路
- Laravel 距離排序Laravel排序
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- javascript獲取元素距離網頁頂部的距離JavaScript網頁
- 曼哈頓距離與切比雪夫距離的互化
- 【洛谷OJ】【JAVA】P1036 選數Java
- 棧的應用 -洛谷P1449
- 洛谷P1957 做題筆記筆記
- 洛谷P2197 nim遊戲(Nim遊戲)遊戲
- 洛谷P3809 【模板】字尾排序排序
- 洛谷P2251 質量檢測
- 洛谷 P1313 計算係數
- 「雜題亂刷」洛谷 P4801
- [題解] [洛谷P1404] 平均數