43 lines
984 B
C++
43 lines
984 B
C++
|
//http://noi.openjudge.cn/ch0206/1808
|
||
|
#include <algorithm>
|
||
|
#include <iostream>
|
||
|
#include <sstream>
|
||
|
#include <string>
|
||
|
|
||
|
const int MAX_LEN = 200+5;
|
||
|
std::string s1,s2;
|
||
|
int dp[MAX_LEN][MAX_LEN];
|
||
|
|
||
|
template<typename T>
|
||
|
T max(const T t1,const T t2,const T t3){
|
||
|
return std::max(t1,std::max(t2,t3));
|
||
|
}
|
||
|
|
||
|
template<typename ...Args>
|
||
|
void print(const Args&...args){
|
||
|
std::stringstream ss;
|
||
|
((ss<<args),...);
|
||
|
std::cout<<ss.str();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
int main(){
|
||
|
while (std::cin>>s1>>s2) {
|
||
|
for(int i=1;i<=s1.length();i++){
|
||
|
for(int j=1;j<=s2.length();j++){
|
||
|
if(s1[i-1]==s2[j-1]){
|
||
|
dp[i][j] = dp[i-1][j-1] + 1;
|
||
|
}else{
|
||
|
dp[i][j] = max(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
// std::cout<<dp[s1.length()][s2.length()]<<"\n";
|
||
|
print(dp[s1.length()][s2.length()],"\n");
|
||
|
}
|
||
|
}
|
||
|
/*
|
||
|
abcfbc abfcab
|
||
|
programming contest
|
||
|
abcd mnp
|
||
|
*/
|