求最長子序列和最長公共子串

2021-08-29 22:55:56 字數 640 閱讀 9795

又有一段時間沒刷題,今天溫故下,最長公共子串行和最長公共子串概念不一樣,子串行可以不連續,子串必須連續,這兩題均可以用動態規劃解決!,下面程式在vs上跑過無問題!

#include#include#include#includeusing namespace std;

//動態規劃求最長子序列

int longestcommonseq(string s1, string s2)

for (int i = 0; i <= m; i++)

else if (s1[i-1] == s2[j-1])

else

}} return dp[m-1][n-1];

}//動態規劃求解最長連續子串

string longconsecstr(string s1, string s2)

int max = -1;

for (int i = 0; i <= m; i++)

else if(s1[i - 1] == s2[j - 1])

else

if (max < dp[i][j])

}} return s1.substr(index - max, index);

}int main()

求最長公共子串行和最長公共子串

輸入描述 輸入為兩行字串 可能包含空格 長度均小於等於50。輸出描述 輸出為乙個整數,表示最長公共連續子串的長度。輸入例子 abcde abgde 輸出例子 2題解 例如 str1 abcde str2 abgde matrix 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0...

最長公共子串和最長公共子串行

二者含義沒搞清楚,雅虎的筆試就這樣的寫錯了。求最長公共字串的題目寫成了最長公共子串行。子串要求字元必須是連續的,但是子串行就不是這樣了。悲催了。子串行跟子串的求法類似,都是使用動態規劃的思想,s1每次增加乙個字元,看與s2當前位置的字元是不是相同,如果相同做相應的處理,如果不同,做另外的處理。子串行...

最長公共子串行和最長公共子串

問題定義 最長公共子串行,序列的意思是順序對就可以,並不需要是連續的。例如 abcde oalblcldle其中abcde就是這兩個字串的最長公共子串行。容易知道乙個長度為n的字串的子串行有2 n 個,假設兩個字串的長度都為n,直接去求解兩個字串的最長公共子串行需要用這2 n 個序列串去匹配另外乙個...