POJ1458 Common Subsequence LCS问题入门题[DP]

来源:互联网 发布:大隈机械okuma编程 编辑:程序博客网 时间:2024/05/29 17:26

入门题。

#include<iostream>#include<string>#define max(a,b) (a>b?a:b)using namespace std;char s1[500],s2[500];int n1,n2;int mat[2][500];int main(){while(scanf("%s%s",s1+1,s2+1)!=EOF){memset(mat,0,sizeof(mat));n1=strlen(s1+1);n2=strlen(s2+1);for(int i=1;i<=n1;i++)for(int j=1;j<=n2;j++){if(s1[i]==s2[j]){mat[i%2][j]=mat[(i+1)%2][j-1]+1;}else{mat[i%2][j]=max(mat[i%2][j-1],mat[(i+1)%2][j]);}}printf("%d\n",mat[n1%2][n2]);}return 0;}