一、心得
1、字串相關問題dp的時候從0開始是個陷阱
二、題目
時間限制: 1 s
空間限制: 128000 kb
題目等級 : 鑽石 diamond
題解
description
設a和b是2個字串。要用最少的字元操作將字串a轉換為字串b。這裡所說的字元操作包括:
(1)刪除乙個字元;
(2)插入乙個字元;
(3)將乙個字元改為另乙個字元。
將字串a變換為字串b所用的最少字元運算元稱為字串a到b的編輯距離,記為d(a,b)。試編寫程式,對任給的2個字串a和b,計算出它們的編輯距離d(a,b)。
輸入描述
input description
輸入檔案edit.in有兩行,第一行是字串a,第二行是字串b。
輸出描述
output description
輸出檔案edit.out只有一行,即編輯距離d(a,b)。
樣例輸入
sample input
fxpimu
xwrs
樣例輸出
sample output
資料範圍及提示
data size & hint
40%的資料字串a、b的長度均不超過100;
100%的資料字串a、b的長度均不超過4000。
分類標籤 tags 點此展開
動態規劃
三、分析
* codevs2598編輯距離.cpp
* 分析:
* 狀態:
* f[i][j]表示串s1的前i個字元和串s2的前j個字元的編輯距離
* 最終狀態:
* f[len_s1][len_s2]
* 初始狀態:
* f[i][0]=i;f[0][j]=j
* 狀態轉移方程:
上圖為初始化及分析過程
上圖為dp陣列結果
四、ac**
94ms
1/*2五、注意點* codevs2598編輯距離.cpp
3* 分析:
4* 狀態:
5* f[i][j]表示串s1的前i個字元和串s2的前j個字元的編輯距離
6* 最終狀態:
7* f[len_s1][len_s2]
8* 初始狀態:
9* f[i][0]=i;f[0][j]=j
10* 狀態轉移方程:
11* f[i][j]=f[i-1][j-1]; (s1[i]==s2[j])
12* f[i][j]=min(f[i-1][j-1],f[i-1][j],f[i][j-1])+1; (s1[i]!=s2[j])13*
14*/
1516 #include 17 #include
18 #include 19
using
namespace
std;
20string
s1, s2;
21int f[4005][4005
];22
intlen_s1, len_s2;
2324
void
readdata()
2728
void
printread()
3132
void
initlen()
3637
void
printlen()
4041
void
initarr_f() 47}
48//
0列49
for (int i = 0; i <= len_s1; i++)
52//
0行53
for (int j = 0; j <= len_s2; j++) 56}
5758
void
printarr_f()
63 cout <
65}6667
void
init()
7576
int min3(int a,int b,int
c)79
80void
dp() 87}
88}89}
9091
void
printans()
9495
intmain()
103/*
104* 注意點:
105* 1、f陣列最初的初始化不能忘記
106* f[i][j] = 0xfffff;
107* 2、if(s1[i-1]==s2[j-1])這裡忘記寫減1了
108* 字串從0開始
109*/
1、f陣列最初的初始化不能忘記
f[i][j] = 0xfffff;
2、if(s1[i-1]==s2[j-1])這裡忘記寫減1了
字串從0開始
codevs 天梯 能量項鍊 dp
題目 在mars 星球上,每個 mars 人都隨身佩帶著一串能量項鍊。在項鍊上有 n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標記。因為只有這樣,通過吸盤 吸盤是 mars 人吸收能量的一種器官 的作用,...
codevs1378 選課 樹形DP
學校實行學分制。每門的必修課都有固定的學分,同時還必須獲得相應的選修課程學分。學校開設了n n 300 門的選修課程,每個學生可選課程的數量m是給定的。學生選修了這m門課並考核通過就能獲得相應的學分。在選修課程中,有些課程可以直接選修,有些課程需要一定的基礎知識,必須在選了其它的一些課程的基礎上才能...
code vs 1378 選課(樹形DP)
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解 檢視執行結果 學校實行學分制。每門的必修課都有固定的學分,同時還必須獲得相應的選修課程學分。學校開設了n n 300 門的選修課程,每個學生可選課程的數量m是給定的。學生選修了這m門課並考核通過就能獲得相應的學分。...