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;}