标签:ace sts bfc white code algorithm name dice containe
abcfbc abfcab programming contest abcd mnpSample Output
4 2 0
求两个字符串的最长公共子序列。
#include<stdio.h> #include<algorithm> #include<iostream> #include<string.h> #include<math.h> using namespace std; char a[5000]; char b[1050]; char c[1050]; int dp[1050][1050]={0}; int main() { while(scanf("%s %s",b,c)!=EOF) { memset(dp,0,sizeof(dp)); int i; /* for(i=0;a[i]>=‘a‘&&a[i]<=‘z‘;i++) b[i]=a[i]; b[i]=‘\0‘; int l=0; for(;a[i]!=‘\0‘;i++) if(a[i]>=‘a‘&&a[i]<=‘z‘) c[l++]=a[i]; c[l]=‘\0‘;*/ for(i=0;c[i]!=‘\0‘;i++) if(c[i]==b[0]) { dp[i][0]=1; break; } for(;c[i]!=‘\0‘;i++) dp[i][0]=1; for(i=0;b[i]!=‘\0‘;i++) if(c[0]==b[i]) { dp[0][i]=1; break; } for(;b[i]!=‘\0‘;i++) dp[0][i]=1; for(int i=1;b[i]!=‘\0‘;i++) { for(int j=0;c[j]!=‘\0‘;j++) { if(c[j]==b[i]) { dp[j][i]=max(dp[j-1][i-1]+1,dp[j][i-1]); } else dp[j][i]=max(dp[j-1][i],dp[j][i-1]); } } int l1=strlen(b); int l2=strlen(c); printf("%d\n",dp[l2-1][l1-1]); } return 0; }
标签:ace sts bfc white code algorithm name dice containe
原文地址:http://www.cnblogs.com/xzxj/p/7236319.html