亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

利用C++實現最長公共子序列與最長公共子串

2020-01-26 14:22:19
字體:
來源:轉載
供稿:網友

一、問題描述

子串應該比較好理解,至于什么是子序列,這里給出一個例子:有兩個母串

cnblogs

belong

比如序列bo, bg, lg在母串cnblogs與belong中都出現過并且出現順序與母串保持一致,我們將其稱為公共子序列。最長公共子序列(Longest Common Subsequence, LCS),顧名思義,是指在所有的子序列中最長的那一個。子串是要求更嚴格的一種子序列,要求在母串中連續地出現。在上述例子的中,最長公共子序列為blog(cnblogs, belong),最長公共子串為lo(cnblogs, belong)。

二、求解算法

對于母串X=<x1,x2,⋯,xm>X=<x1,x2,⋯,xm>, Y=<y1,y2,⋯,yn>Y=<y1,y2,⋯,yn> ,求LCS與最長公共子串。

暴力解法

假設 m<nm<n, 對于母串XX,我們可以暴力找出2m2m個子序列,然后依次在母串YY中匹配,算法的時間復雜度會達到指數級O(n∗2m)O(n∗2m) 。顯然,暴力求解不太適用于此類問題。

動態規劃

假設Z=<z1,z2,⋯,zk>Z=<z1,z2,⋯,zk>是XX與YY的LCS, 我們觀察到

     如果xm=ynxm=yn,則zk=xm=ynzk=xm=yn,有Zk−1Zk−1是Xm−1Xm−1與Yn−1Yn−1的LCS;

     如果xm≠ynxm≠yn,則ZkZk是XmXm與Yn−1Yn−1的LCS,或者是Xm−1Xm−1與YnYn的LCS。

因此,求解LCS的問題則變成遞歸求解的兩個子問題。但是,上述的遞歸求解的辦法中,重復的子問題多,效率低下。改進的辦法――用空間換時間,用數組保存中間狀態,方便后面的計算。這就是動態規劃(DP)的核心思想了。

DP 求解 LCS

用二維數組c[i][j]記錄串x1x2⋯xix1x2⋯xi與y1y2⋯yjy1y2⋯yj的LCS長度,則可得到狀態轉移方程

代碼實現

public static int lcs(String str1, String str2) { int len1 = str1.length(); int len2 = str2.length(); int c[][] = new int[len1+1][len2+1]; for (int i = 0; i <= len1; i++) { for( int j = 0; j <= len2; j++) {  if(i == 0 || j == 0) {  c[i][j] = 0;  } else if (str1.charAt(i-1) == str2.charAt(j-1)) {  c[i][j] = c[i-1][j-1] + 1;  } else {  c[i][j] = max(c[i - 1][j], c[i][j - 1]);  } } } return c[len1][len2];}

DP 求解最長公共子串

前面提到了子串是一種特殊的子序列,因此同樣可以用DP來解決。定義數組的存儲含義對于后面推導轉移方程顯得尤為重要,糟糕的數組定義會導致異常繁雜的轉移方程。考慮到子串的連續性,將二維數組c[i][j]用來記錄具有這樣特點的子串――結尾同時也為為串x1x2⋯xix1x2⋯xi與y1y2⋯yjy1y2⋯yj的結尾――的長度。

得到轉移方程:

最長公共子串的長度為 max(c[i,j]), i∈{1,⋯,m},j∈{1,⋯,n}max(c[i,j]), i∈{1,⋯,m},j∈{1,⋯,n} 。

代碼實現

public static int lcs(String str1, String str2) { int len1 = str1.length(); int len2 = str2.length(); int result = 0; //記錄最長公共子串長度 int c[][] = new int[len1+1][len2+1]; for (int i = 0; i <= len1; i++) { for( int j = 0; j <= len2; j++) {  if(i == 0 || j == 0) {  c[i][j] = 0;  } else if (str1.charAt(i-1) == str2.charAt(j-1)) {  c[i][j] = c[i-1][j-1] + 1;  result = max(c[i][j], result);  } else {  c[i][j] = 0;  } } } return result;}

總結

以上就是這篇文章的全部內容改了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情视频在线播放| 国产精品国产福利国产秒拍| 欧美电影在线观看网站| 国产亚洲激情视频在线| 亚洲色图av在线| 久久精品中文字幕电影| 欧美日韩午夜视频在线观看| 日韩高清av在线| 久久综合伊人77777蜜臀| 久久九九精品99国产精品| 亚洲视频在线观看免费| 国产精品揄拍500视频| 欧美精品日韩www.p站| 久久免费高清视频| 在线免费观看羞羞视频一区二区| 国产98色在线| 国产三级精品网站| 亚洲欧美国产va在线影院| 按摩亚洲人久久| 最新国产精品拍自在线播放| 欧美久久精品一级黑人c片| 日韩经典中文字幕| 91青草视频久久| 精品日本美女福利在线观看| 亚洲男子天堂网| 欧美色另类天堂2015| 亚洲欧美综合精品久久成人| 亚洲第一视频网| 亚洲福利在线视频| 午夜精品久久久久久久男人的天堂| 欧美激情一区二区三区高清视频| 国产精品尤物福利片在线观看| 亚洲高清久久网| 亚洲三级av在线| 欧美性生活大片免费观看网址| 97超碰蝌蚪网人人做人人爽| 一区二区欧美在线| 欧美精品日韩三级| 亚洲最大福利网站| 中文字幕亚洲精品| 亚洲精品wwww| 中文字幕日韩精品有码视频| 欧美日韩免费在线观看| 亚洲小视频在线| 亚洲最大av网站| 69久久夜色精品国产69| 中文字幕久久久av一区| 亚洲天堂成人在线| 亚洲一区二区三区在线视频| 视频一区视频二区国产精品| 韩国精品久久久999| 国产精品露脸av在线| 久久久精品国产一区二区| 国产精品影片在线观看| 日韩精品在线免费播放| 疯狂欧美牲乱大交777| 日韩欧美中文在线| 一区二区三区国产视频| 国产视频在线一区二区| 欧美激情免费在线| 欧美福利视频网站| 日韩视频免费观看| 欧美劲爆第一页| 亚洲图片欧洲图片av| 热久久这里只有精品| 亚洲国产精品久久久久| 国模视频一区二区三区| 一区二区三区视频免费在线观看| 日韩视频免费在线观看| 日日狠狠久久偷偷四色综合免费| 一本色道久久88亚洲综合88| 国产999精品久久久| 丝袜一区二区三区| 精品亚洲一区二区三区在线观看| 国产精品久久久久久久久免费看| 欧美黑人国产人伦爽爽爽| 亚洲黄页视频免费观看| 性色av一区二区咪爱| 欧美日韩国产二区| 国产xxx69麻豆国语对白| 日韩在线观看免费全集电视剧网站| 亚洲精品久久视频| 亚洲国产精品嫩草影院久久| 97精品一区二区视频在线观看| 亚洲视频网站在线观看| 国产主播欧美精品| 欧美特黄级在线| 日韩经典一区二区三区| 韩国19禁主播vip福利视频| 欧美激情第1页| 日韩欧美成人网| 人人做人人澡人人爽欧美| 日韩福利视频在线观看| 久久成人人人人精品欧| 国产精品亚洲视频在线观看| 国产一区二区日韩| 日韩久久午夜影院| 亚洲天堂一区二区三区| 91久久久在线| 国产精品一区二区久久| 97国产精品视频人人做人人爱| 日韩在线免费高清视频| 91在线观看免费观看| 国产欧美日韩中文| 热99在线视频| 国产视频综合在线| 国产亚洲a∨片在线观看| 成人黄色免费看| 国产精品一区二区三区毛片淫片| 亚洲福利在线播放| 97视频在线看| 欧美电影院免费观看| 欧美性xxxx18| 2019av中文字幕| 这里只有精品视频在线| 亚洲毛片一区二区| 国产精品免费小视频| 欧美在线性视频| 久久精品视频99| 欧美精品videosex极品1| 欧美激情免费观看| 欧美成人精品影院| 国产精品69精品一区二区三区| 国产精品久久久av| 综合久久五月天| 亚洲一区二区久久久| 国产丝袜一区视频在线观看| 成人网欧美在线视频| 亚洲欧美国产精品| 亚洲一区第一页| www.日韩不卡电影av| 亚洲一区二区三区sesese| 亚洲综合日韩在线| 久久久久久综合网天天| 欧美日韩国产成人在线观看| 91亚洲人电影| 亚洲在线观看视频| 久久精品国产一区二区三区| 在线视频日本亚洲性| 欧美激情一级精品国产| 国产精品福利在线观看| 欧美与黑人午夜性猛交久久久| 国产成人aa精品一区在线播放| 亚洲三级黄色在线观看| 日韩免费观看网站| 亚洲国产99精品国自产| 日韩中文第一页| 亚洲免费视频一区二区| 日韩成人在线电影网| 国产精品久久久久久久久借妻| 欧美日韩国产色| 日韩精品亚洲视频| 久久久久久这里只有精品| 欧美一性一乱一交一视频| 日本精品中文字幕| 欧美一区二区大胆人体摄影专业网站| 免费99精品国产自在在线| 久久久久久亚洲| 国产精品高清免费在线观看| 亚洲最大成人在线| 国产精品爽黄69| 青青草精品毛片| 不卡在线观看电视剧完整版| 欧美日韩第一视频|