*烟台大学计算机学院学生
*All right reserved.
*文件名称*烟台大学计算机学院学生
*All right reserved.
*文件名称:最长公共序列的长度
*作者:杨飞
*完成日期:2014年4月10日
*版本号:v1.0
*对任务及求解方法的描述部分:最长公共序列的长度
*我的程序:
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
const int N=105;
int dp[N+1][N+1] ;
char str1[N] , str2[N];
int maxx(int a , int b)
{
if(a > b)
return a ;
return b ;
}
int LCSL(int len1 , int len2)
{ int i,j ;
int len=maxx(len1 , len2);
for( i=0;i<=len;i++)
{
dp[i][0] = 0 ;
dp[0][i] = 0 ;
}
for( i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
{
if(str1[i-1]==str2[j-1])
{
dp[i][j]=dp[i-1][j-1]+1 ;
}
else
{
dp[i][j] = maxx(dp[i-1][j] , dp[i][j-1]) ;
}
}
return dp[len1][len2];
}
int main()
{
cout<<"请输入两个字符串"<<endl;
while(cin >> str1 >> str2)
{
int len1 = strlen(str1) ;
int len2 = strlen(str2) ;
cout<<LCSL(len1 , len2)<<endl;
}
return 0;
}
运行结果:
心得体会:最长公共的子序列的算法运用了动态规划!!!真的感觉自己知道的太少了,努力吧少年们,我们的路还很长,我们一定要不断的走下去!!!