时间复杂度O(m*n)

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <math.h>
#include <stdlib.h>
#define INF 0x3f3f3f3f
#define maxn 10000+10
#define cle(a) memset(a,0,sizeof(a))
using namespace std;
char a[maxn],b[maxn];
int dp[maxn][maxn];
int main()
{
while(cin>>a>>b){
int la=strlen(a);
int lb=strlen(b);
for(int i=;i<la;i++)dp[i][]=;
for(int j=;j<lb;j++)dp[][j]=;
//cle(dp)
for(int i=;i<=la;i++)
for(int j=;j<=lb;j++){
if(a[i-]==b[j-])dp[i][j]=dp[i-][j-]+;
else dp[i][j]=max(dp[i-][j],dp[i][j-]);
}
printf("%d\n",dp[la][lb]);
}
return ;
}

如果要输出最长公共子序列,可以添加flag[][]数组,进行转移方向的记录,逆推。

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <math.h>
#include <stdlib.h>
#define INF 0x3f3f3f3f
#define maxn 500+10
#define cle(a) memset(a,0,sizeof(a))
using namespace std;
char a[maxn],b[maxn];
int dp[maxn][maxn];
int flag[maxn][maxn];
char lcs[maxn];
int main()
{
while(cin>>a>>b){
int la=strlen(a);
int lb=strlen(b);
for(int i=;i<la;i++)dp[i][]=;
for(int j=;j<lb;j++)dp[][j]=;
//cle(dp)
for(int i=;i<=la;i++)
for(int j=;j<=lb;j++){
if(a[i-]==b[j-]){
dp[i][j]=dp[i-][j-]+;
flag[i][j]=;//向右下转移
}
else{
if(dp[i-][j]>dp[i][j-]){
flag[i][j]=;//向下转移
dp[i][j]=dp[i-][j];
}
else{
flag[i][j]=;//向右转移
dp[i][j]=dp[i][j-];
}
}
}
int i=la,j=lb;
int k=;
while(i>&&j>){
if(flag[i][j]==){
lcs[k]=a[i-];
k++,i--,j--;
}
else if(flag[i][j]==)i--;
else if(flag[i][j]==)j--;
}
printf("%d\n",dp[la][lb]);
for(int i=k-;i>=;i--)
printf("%c",lcs[i]);
}
return ;
}

最新文章

  1. jquery ajax(实现单独提交某个form)
  2. 2016HUAS暑假集训训练题 B - Catch That Cow
  3. GDB的Breakpoint, Watchpoint和Catchpoint
  4. Yeoman
  5. iOS 使用Keychain 保存 用户名和密码到 本地
  6. UI-简答的BOL的取值塞值
  7. HDU 5311 Hidden String (暴力)
  8. HDU 4911 Inversion
  9. 【转】 log4cpp 的使用
  10. URAL 1553. Caves and Tunnels 树链拆分
  11. Django web框架开发基础-django实现留言板功能
  12. echarts 图表后面背景色
  13. springboot 格式化返回日期
  14. linux下搭建SVN
  15. ABC卡
  16. Socket网络编程--网络爬虫(1)
  17. Java中的国际化
  18. python nose测试框架全面介绍四
  19. ubuntu下Open vSwitch安装
  20. onethink判断是否是手机访问?

热门文章

  1. 算法复习——带修改莫队(bzoj2453)
  2. P2949 [USACO09OPEN]工作调度Work Scheduling
  3. spring aop在mvc的controller中加入切面无效
  4. 虚拟机vmnet0、vmnet1和vmnet8的区别 虚拟网卡概述
  5. Codevs 1021 玛丽卡==洛谷 P1186
  6. 湘潭oj1203/邀请赛A题 数论+java大数
  7. FireDac心得
  8. Oracle 12c PDB和CDB全局用户权限问题
  9. 存code
  10. Centos7 下安装 RabbitMQ