Common Subsequence-HDU1159
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define int long long
string s1,s2; //输入的两个字符串
int l1,l2; //s1,s2的长度
int dp[1005][1005]; //存储状态
void solve(){
l1 = s1.length(),l2 = s2.length();
s1 = " " + s1,s2 = " "+ s2;
//初始化
for(int i = 1;i <= l1;++i)
for(int j = 1;j <= l2;++j)
if(s1[i] == s2[j])
dp[i][j] = dp[i - 1][j - 1] + 1;
else
dp[i][j] = max(dp[i][j - 1],dp[i - 1][j]);
cout<<dp[l1][l2]<<"\n";
}
signed main(){
IOS;
while(cin>>s1>>s2)
solve();
return 0;
}