?
1210: 最长公共子序列
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 10 Solved: 8
[Submit][Status][Web Board]
Description
给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。
如:
ABCBDAB
BDCABA
它们的最长公共子序列就是 BCBA,长度为4。
?
Input
每组两个长度小于100的字符串。
?
Output
输出最长公共子序列的长度。
?
Sample Input
ABCBDAB BDCABA
Sample Output
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<
?
?