C++求两个字符串的LCS

C++求两个字符串的LCS_第1张图片
C++求两个字符串的LCS_第2张图片
C++求两个字符串的LCS_第3张图片
在这里插入图片描述
C++求两个字符串的LCS_第4张图片

// Author:PanDaoxi
#include 
using namespace std;
int dp[101][101];
void lcs(string & s1,string & s2){
	int m=s1.size();
	int n=s2.size();
	s1="#"+s1;
	s2="#"+s2;
	//动规核心
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			//第一种情况:末尾字母相等
			if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1; 
			//第二种情况
			else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);	 
		}
	} 
	cout<<dp[m][n]<<endl;
} 
int main(){
	string s1,s2;
	cin>>s1>>s2;
	//求出最长公共子序列
	lcs(s1,s2); 
	return 0;
}
 

你可能感兴趣的:(C++,c++,开发语言,后端)