HDU1159 Common Subsequence 最长公共子序列

题目大意:给你两个字符串,让你找出他们的最长公共子序列。


分析:裸LCS

实现代码如下:

#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
#define maxn 1005
int dp[maxn][maxn];
int main()
{
    string str1,str2;
    while(cin>>str1>>str2)
    {
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=str1.length();i++)
          for(int j=1;j<=str2.length();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<<dp[str1.length()][str2.length()]<<endl;
    }
    return 0;
}


你可能感兴趣的:(HDU1159 Common Subsequence 最长公共子序列)