/**
* longest common subsequence
* @param s1 string字符串 the string
* @param s2 string字符串 the string
* @return string字符串
*/
char* LCS(char* s1, char* s2 ) {
// write code here
int len1=strlen(s1);
int len2=strlen(s2);
int max=0;
//设置二维数组dp保存最长公共子序列长度,
int dp[2000][2000]={0};
for(int i=0;i<len1;i++)
{
for(int j=0;j<len2;j++)
{
//s1第i个字符和s2第j个字符相等,dp[i][j]根据dp[i][j]进行累加
if(s1[i] == s2[j])
{
dp[i+1][j+1]=dp[i][j]+1;
//max记录最长公共子序列的长度
if(dp[i+1][j+1]>max)
max=dp[i+1][j+1];
}
//s1第i个字符和s2第j个字符不相等,根据状态转移方程
else
{
dp[i+1][j+1]=(dp[i+1][j]>dp[i][j+1]?dp[i+1][j]:dp[i][j+1]);
}
}
}
printf("%d",max);
return NULL;
}