最大公共子序列的求解思路就是从一序列开始,每个字符与第二列的每个字符相比较,通过状态转移方程#include<iostream> #include<string> #include<algorithm> using namespace std; int F[1001][1001]; int max(int a,int b) { return a>b?a:b; } int main() { string x,y; int i,j; int l1,l2; while(cin>>x>>y) { l1=x.size(); l2=y.size(); memset(F,0,sizeof(F)); for(i=0;i<l1;i++) { for(j=0;j<l2;j++) //状态转移 { if(x[i]==y[j]) { F[i+1][j+1]=F[i][j]+1; } else { F[i+1][j+1]=max(F[i+1][j],F[i][j+1]); } } } cout<<F[l1][l2]<<endl; } return 0; }
总结---最大公共子序列
最新推荐文章于 2023-03-30 21:55:32 发布
本文介绍如何使用C++编程实现求解两个字符串的最大公共子序列。通过状态转移方程,当字符串中的字符相同时更新F[i][j]值,否则取F[i][j-1]和F[i-1][j]的最大值。示例代码展示了一个完整的解决方案,处理了边界问题。
摘要由CSDN通过智能技术生成