日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)

發(fā)布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學習交流加

  • 個人qq:
    1126137994
  • 個人微信:
    liu1126137994
  • 學習交流資源分享qq群:
    962535112

給定兩個字符串A和B,返回兩個字符串的最長公共子序列的長度。例如,A="1A2C3D4B56”,B="B1D23CA45B6A”,”123456"或者"12C4B6"都是最長公共子序列。

給定兩個字符串A和B,同時給定兩個串的長度n和m,請返回最長公共子序列的長度。保證兩串長度均小于等于300。

測試樣例:
“1A2C3D4B56”,10,“B1D23CA45B6A”,12
返回:6

這是一個最長公共子序列問題,不是最長上升子序列問題,注意區(qū)分!!!!!!!

我們同樣是使用動態(tài)規(guī)劃的思想,假設字符串A的長度為n,字符串B的長度為m,則我們生成一個dp矩陣,大小為n*m。
那么dp[i][j]含義,就為A[0i]與B[0j]的最長公共子序列!!!

那么dp[i][j]的求法是什么?
1、矩陣dp的第一行dp[0][i]:
代表A[0]與B[0i]的最長公共子序列長度,A[0]只有一個字符,所以dp[0][i]最大值為1,如果A[0]==B[i],則另dp[0][i]=1;一旦dp[0][i]=1,則將dp[0][(i+1)(m-1)]全部設為1;
2、矩陣的第一列dp[j][0]
求法與求第一行的值相同,如果B[0]==A[j],則另dp[j][0]=1;一旦dp[j][0]=1,則將dp[(j+1)~(n-1)][0]全部設為1;
3、矩陣其他行的值的求法
dp[i][j]的情況,只可能來自以下兩種情況:

情況一:A[i] 與 B[j]不相等
dp[i][j]可能是等于dp[i-1][j]的值

同理,也有可能是等于dp[i][j-1]

然后選擇上述兩者的最大值即可!!!

情況二:A[i] 與 B[j]相等
此時,dp[i][j]=dp[i-1][j-1]+1

代碼實現(xiàn)如下:

class LCS { public:int findLCS(string A, int n, string B, int m) {// write code here// if(n==0||m==0)// return 0;int dp[n][m];//先求第一行int flag1,flag2;for(int h=0;h<=m-1;h++){if(A[0]!=B[h])dp[0][h]=0;else{flag1=h;for(int k=flag1;k<=m-1;k++){dp[0][k]=1;}break;} }//再求第一列for(int q=0;q<=n-1;q++){if(B[0]!=A[q])dp[q][0]=0;else{flag2 =q;for(int p=flag2;p<=n-1;p++){dp[p][0]=1;}break;} }//再求其他行的值for(int i=1;i<=n-1;i++){for(int j=1;j<=m-1;j++){if(A[i]==B[j])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}return dp[n-1][m-1];} };

求最優(yōu)解問題,往往能夠使用動態(tài)規(guī)劃的方法來做,動態(tài)規(guī)劃,就是先求解子問題,然后整合求解整體問題!算法的思想,還是很奇妙的!!!

總結

以上是生活随笔為你收集整理的【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。