B题 最长公共子序列

来源:互联网 发布:手机淘宝描述在哪 编辑:程序博客网 时间:2024/06/07 06:49
#include<iostream>using namespace std;#include<cstdio>#include<cstring>#include<algorithm>#define N 1010int dp[N][N];int main (){    char s1[N],s2[N];    while(gets(s1),gets(s2))    {          int len1 = strlen(s1);          int len2 = strlen(s2);          for(int i = 1; i <= len1; i++ )            dp[i][0] = 0;          for(int i = 1; i <= len2; i++ )              dp[0][i] = 0;          for(int i = 1; i <= len1; i++ )          {              for(int j = 1; j <= len2; j++ )                  if(s1[i-1] == s2[j-1] )                     dp[i][j] = dp[i-1][j-1]+1;                  else                // dp[i][j] = max(dp[i-1][j-1],dp[i-1][j],dp[i][j-1]);                    dp[i][j] = max(dp[i-1][j],dp[i][j-1]);          }          printf("%d\n",dp[len1][len2]);          memset(s1,'\0',sizeof(s1));          memset(s1,'\0',sizeof(s2));          memset(dp,0,sizeof(dp));    }    return 0;}

原创粉丝点击