程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 最長公共子序列

最長公共子序列

編輯:C++入門知識

最長公共子序列


 

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<

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved