dp3 codevs2598 編輯距離問題

2021-09-07 14:10:39 字數 2810 閱讀 5378

一、心得

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門課並考核通過就能獲得相應的學分。...