POJ:http://poj.org/problem?id=1458

ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=733

HDU: http://acm.hdu.edu.cn/showproblem.php?pid=1159

题目大意:

给定两串子序列,求最长的公共字串(LCS)

设d( i , j)为A和 B的LCS的长度,则当A[i] = B[j]时, d(i , j)= d(i-1, j-1)+1 ; 否则 d (i , j)=max ( d(i - 1 ,j) , d(i , j-1 )},时间复杂度为O(nm),n和m分别为序列A和B的长度。

可用滚动数组优化空间复杂度。

下面给出不用和用滚动数组的。

空间未用滚动数组优化版本。。。。

#include<cstdio>
#include<cstring>
const int MAXN=512;
char a[MAXN],b[MAXN];
int dp[MAXN][MAXN];
int main()
{
while(~scanf("%s%s",a+1,b+1))
{
memset(dp,0,sizeof(dp));
int len_a=strlen(a+1);
int len_b=strlen(b+1);
for(int i=1;i<=len_a;i++)
{
for(int j=1;j<=len_b;j++)
{
if(a[i] == b[j])
dp[i][j]= dp[i-1][j-1]+1;
else
dp[i][j]= dp[i][j-1] > dp[i-1][j]? dp[i][j-1] : dp[i-1][j];
}
}
printf("%d\n",dp[len_a][len_b]);
}
}

滚动数组优化空间:

设dp1为前一列,dp2为后面一列。

#include<cstdio>
#include<cstring>
const int MAXN=512;
char a[MAXN],b[MAXN];
int dp1[MAXN],dp2[MAXN];
int main()
{
while(~scanf("%s%s",a+1,b+1))
{
memset(dp1,0,sizeof(dp1));
memset(dp2,0,sizeof(dp2));
int len_a=strlen(a+1);
int len_b=strlen(b+1);
for(int i=1;i<=len_a;i++)
{ for(int j=1;j<=len_b;j++)
{
if(a[i] == b[j])
dp2[j]= dp1[j-1]+1;
else
dp2[j]= dp2[j-1] > dp1[j]? dp2[j-1] : dp1[j];
} memcpy(dp1,dp2,sizeof(dp2)); }
printf("%d\n",dp1[len_b]);
}
}

最新文章

  1. Bootstrap 3 模态框播放视频
  2. ssh安装与配置
  3. 你的联动够快够小吗——基于Telerik(ASP.NET平台)
  4. Linux Linux程序练习八
  5. PV公式
  6. kindeditor编辑器
  7. Android的那些轮子
  8. jquery和highcharts折线图、柱形图、饼状图-模拟后台传參源代码
  9. Nancy
  10. 防止aspx木马的IIS SPY变态功能
  11. ArrayList源码解析(一)
  12. CentOS7安装MySQL的方法之RPM包方式
  13. 安装paramiko
  14. JAVA_SE基础——68.RunTime类
  15. mac相关功能
  16. 搜素表脚本.vbs
  17. Spring 入门知识点笔记整理
  18. Golang基础
  19. python各种post上传文件
  20. Windump教程-参数介绍

热门文章

  1. javaweb三、JDBC访问数据库
  2. col---过滤控制字符
  3. 洛谷——P2093 零件分组
  4. 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一
  5. [Angular] Make a chatbot with DialogFlow
  6. jquery表格简单插件
  7. UVa10397_Connect the Campus(最小生成树)(小白书图论专题)
  8. email之TO、CC、BCC意义
  9. 虚拟机上的企业网络管理系统(cisco works 2000安装配置)
  10. Codeforces 451 E. Devu and Flowers(组合数学,数论,容斥原理)