Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
112130 | 毛泓博(做题专用,大号Fess) | 最长公共子序列 | C++ | 通过 | 100 | 0 MS | 1020 KB | 1181 | 2023-11-25 10:36:52 |
//#include<bits/stdc++.h> //using namespace std; //string a,b; //int f(string a,string b) //{ // int dp[10000][10000],sa=a.length(),sb=b.length(); // for(int i=1;i<=sa;i++) // { // for(int j=1;j<=sb;j++) // { // if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1; // else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); // } // } // return dp[sa][sb]; //} //int main() //{ // while(cin>>a>>b) cout<<f(a,b)<<'\n'; // return 0; //} #include <iostream> #include <string.h> #include <algorithm> #define MAX 1000 using namespace std; char s1[MAX]; char s2[MAX]; int maxlen[MAX][MAX]; int main() { while(cin>>s1>>s2) { int len1=strlen(s1); int len2=strlen(s2); int i,j; for(i=0;i<=len1;i++) maxlen[i][0]=0; for(j=0;j<=len2;j++) maxlen[0][j]=0; for(i=1;i<=len1;i++) { for(j=1;j<=len2;j++) { if(s1[i-1]==s2[j-1]) maxlen[i][j]=maxlen[i-1][j-1]+1; else maxlen[i][j]=max(maxlen[i-1][j],maxlen[i][j-1]); } } cout<<maxlen[len1][len2]<<endl; } return 0; }