首页 > 代码库 > poj 最长公共子序列 1458 记忆式搜索
poj 最长公共子序列 1458 记忆式搜索
#include <iostream>
using namespace std;
#include<cstring>
#define N 1005
char s1[N],s2[N];
int dp[N][N];
int max(int a,int b) { return a>b ? a:b ;}
int f(int x ,int y)
{
if(dp[x][y]!=-1) return dp[x][y];
if(x==0||y==0) return dp[x][y]=0;
else if(s1[x-1]!=s2[y-1]) return dp[x][y]=max(f(x-1,y), f(x,y-1));
else return dp[x][y]=f(x-1,y-1)+1;
}
int main(int argc, char *argv[])
{ int len1,len2;
while(cin>>s1>>s2)
{
len1=strlen(s1); len2=strlen(s2);
memset(dp,-1,sizeof(dp));
f(len1,len2);
cout << dp[len1][len2] << endl ;
}
return 0;
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。