您的位置:首页 > 产品设计 > UI/UE

poj 1458 Common Subsequence(LCS)

2014-08-04 16:17 531 查看
//滚动数组写的,防止超内存
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[2][1010];//dp[i][j]大小之于dp[i-1][j]有关
char s[1010],str[1010];
int lcs(int n,int m){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(s[i-1]==str[j-1]) dp[i%2][j]=dp[(i-1)%2][j-1]+1;
else dp[i%2][j]=max(dp[(i-1)%2][j],dp[i%2][j-1]);
}
}
return dp[n%2][m];
}
int main(){
int n,m,i,j;
while(~scanf("%s%s",s,str)){
memset(dp,0,sizeof(dp));
n=strlen(s);
m=strlen(str);
printf("%d\n",lcs(n,m));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: