ZOJ1733-Common Subsequence

来源:互联网 发布:四川话在线翻译软件 编辑:程序博客网 时间:2024/06/05 09:47

最长公共子序列,设dp[i][j]为X序列前i个元素和Y序列前j的元素所能构成的最长公共子序列;

状态转移方程:

{

0i=j=0;

dp[i][j]=    dp[i-1][j-1]+1 X[i]=Y[j];

max(dp[i-1][j],dp[i][j-1])else 

}

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>using namespace std;int main(){string a,b;int dp[1001][1001],i,j; cin>>a>>b; memset(dp,0,sizeof(dp)); for(i=1;i<=a.length();i++) { for(j=1;j<=b.length();j++) { if(a[i-1]==b[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[a.length()][b.length()]<<endl;return 0;}


0 0