Common Subsequence (dp)

来源:互联网 发布:传智php教程百度云 编辑:程序博客网 时间:2024/05/16 10:58
#include <stdio.h>#include <string.h>#define maxn 1050char a[maxn],b[maxn];int dp[maxn][maxn];int max(int x,int y){return x > y ? x : y;}void solve(int x,int y){int i,j;//memset(dp,0,sizeof(dp));for(i = 0; i < x ; i++)        dp[i][0] = 0;        for(i = 0; i < y ; i++)        dp[0][i] = 0;for(i=0;i<x;i++)for(j=0;j<y;j++){if(a[i] == b[j]) {dp[i+1][j+1] = dp[i][j] + 1;}else{dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);}}printf("%d\n",dp[i][j]);}int main(){int len1,len2;while(scanf("%s %s",a,b)==2){//printf("%s %s\n",a,b);len1=strlen(a);len2=strlen(b);solve(len1,len2);}}