POJ2192 Zipper(動態規劃)

2021-05-25 03:18:10 字數 499 閱讀 6295

這個題目要求判斷2個字串能否組成1個字串,例如cat和tree能組成tcraete。我們定義乙個布林型別的二維陣列array,array[i][j]表示str1[i]和str2[j]能否組成str[i+j].i=0或者j=0表示空字串,所以初始化時,array[0][j]表示str1的前j個字元是否和str都匹配。

對於str=tcraete:

null c

a tnull 1

0 00 t

1 r

0

e 0e 0

可以證明:當array[i-1][j]( array[i][j]上面一格)和array[i][j-1]( array[i][j]左面一格)都為0時,array[i][j]為0.當array[i-1][j]( array[i][j]上面一格)為1且左面字母為str[i+j]時或者當array[i][j-1]( array[i][j]左面一格)為1且上面字母為str[i+j]時,array[i][j]為1.這就是狀態轉移方程為。

Zipper動態規劃

判斷s1 s2能否混合組成s3,可以先判斷s3的子串能否由前兩者的子串組合而成,最基本的形式是,s3的第乙個字元是否等於s1或s2的第乙個字元。一 題目簡述 題目大意是給定三個字串,判斷第三個字串能否由前兩個混合成,但是前兩個字串要保持各自的字元順序。如下的三個字串,c是能由a b組合成的 stri...

077day(動態規劃題(Zipper)的嘗試)

172210704111 陳國佳總結 2017年12月27日 連續077天 內容 這道題按照我的理解,為給兩個字串,按它們字母的順序,看能否組成第三個字串 其中,1這道題我暫時還未解出來,先給一下錯誤 const int num 200 int n,al,bl cin n char a num b ...

poj 動態規劃 1141

dp練習的第三道題,依然花了我斷斷續續好幾個小時 有人說看到題目裡的 2.if s is a regular sequence,then s and s are both regular sequences.3.if a and b are regular sequences,then ab is ...