給出兩個字符串,求出這樣的一個最長的公共子序列的長度:子序列中的每個字符都能在兩個原串中找到,而且每個字符的先後順序和原串中的先後順序一致。
如:
ABCBDAB
BDCABA
它們的最長公共子序列就是 BCBA,長度為4。
每組兩個長度小於100的字符串。
輸出最長公共子序列的長度。
ABCBDAB BDCABA
4
#include#include #include #include using namespace std; int main() { string str1,str2; int dp[200][200]; while(cin>>str1>>str2) { memset(dp,0,sizeof(dp)); int la = str1.length(); int lb = str2.length(); for(int i = 1; i <= la; i++) for(int j = 1; j <= lb; j++) { if(str1[i - 1] == str2[j - 1]) { dp[i][j] = dp[i-1][j-1]+1; } else dp[i][j] = max(dp[i-1][j],dp[i][j-1]); } cout<