题意:

给两个字符串,找到其中最长的公共子序列,输出长度.

解题思路:

一开始想用滚动数组来做,然后无限被wa,放弃了...........(怀疑这题能不能用滚动数组,还是我太cai.........)

然后用二维数组做,dp[i][j]表示当a字符串长度为i,b字符串长度为j时的最长公共子序列长度.

来看动态转移方程

if(a[i] == b[j])    dp[i+1][j+1] = dp[i][j] + 1;

else              dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);

接下来是代码.

#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;int dp[8000][8000];
char a[10005],b[10005];int main()
{int i,j;while(~scanf("%s%s",a,b)){memset(dp,0,sizeof(dp));for(i = 0;i < strlen(a);i++){for(j = 0;j < strlen(b);j++){if(a[i] == b[j]){dp[i+1][j+1] = dp[i][j]+1;}else{dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);}}}printf("%d\n",dp[strlen(a)][strlen(b)]);}return 0;
} 

POJ - 1458(最长公共子序列,动态规划)相关推荐

  1. 【ACM】最长公共子序列 - 动态规划

    最长公共子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长 ...

  2. C语言(CED)最长公共子序列----动态规划第一题

    一.动态规划算法与分治法的异同 相同点: A.二者均是将待求解的问题分成若干子问题来求解. B.二者在编写代码的时候,都要用到递归. 不同点: A.分治法求解的问题,在将问题分成若干子问题之后,其子问 ...

  3. 最长公共子序列-动态规划(C/C++)

    动态规划简述 使用最优子结构特性,动态规划算法采用自底向上的方式计算,在求解的过程中保存已经计算好的子问题的最优解,当子问题的最优解被重复使用时,无需再次计算直接从保存的空间中调用. 举个例子: 斐波 ...

  4. 最长公共子序列动态规划c语言,动态规划----最长公共子序列(C++实现)

    最长公共子序列 题目描述:给定两个字符串s1 s2 - sn和t1 t2 - tm .求出这两个字符串的最长公共子序列的长度.字符串s1 s2 - sn的子序列指可以表示为 - { i1 < i ...

  5. 最长公共子序列--动态规划(C++)

    动态规划与分治方法类似,都是通过组合子问题来求解原问题.分治法将问题分为互不相交的子问题,递归的求解子问题,再将他们的解组合起来,求出原问题的解.相反的,动态规划用于子问题重叠的情况,即不同的子问题具 ...

  6. 116. Leetcode 1143. 最长公共子序列 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长 公共子序列为dp[i][j] 步骤二.推 ...

  7. nyoj36最长公共子序列 动态规划

    题目链接:http://115.159.40.116/problem_show.php?pid=4648 http://acm.nyist.net/JudgeOnline/problem.php?pi ...

  8. 最长公共子序列-动态规划-python

    题目描述 给定一个长度为 N 数组 a 和一个长度为 M 的数组 b. 请你求出它们的最长公共子序列长度为多少. 输入描述 输入第一行包含两个整数 N,M,分别表示数组 a 和 b 的长度. 第二行包 ...

  9. 夕拾算法进阶篇:15)最长公共子序列(动态规划DP)

    题目描述 给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就把Z叫做X的子序列. 例如:Z=<a,b,f,c>是序列X=<a,b,c ...

  10. bzoj 2423 [HAOI2010]最长公共子序列 动态规划

    Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1" ...

最新文章

  1. 75. InputStreamReader和OutputStreamWriter(转换流--字节流转换成字符流)
  2. 操作系统:第二章 进程管理1 - 进程、线程
  3. 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)
  4. 如何找到一个前端事件对应的事件处理函数
  5. Netflow的配置方法
  6. linux timerfd_settime函数,Linux的timerfd分析
  7. 13. 面向对象的概述
  8. VC调用Lingo并转化成 QT 工程编写一个特定的解决线性问题的软件
  9. 云优CMS插件不需要云优CMS授权码的插件
  10. 图解:冒泡排序及其优化
  11. 【原】小软件开发心得(二)——推广、测试
  12. onlyoffice+vue实现在线预览在线编辑
  13. 元数据是什么?如何管理元数据?
  14. 关闭iOS上京东app不停询问“京东想从MF839粘贴”,您允许这样做吗? - 允许iphone应用访问剪切板
  15. centos php 开启libgdgd_linux gd
  16. mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB
  17. 文献阅读---玉米干旱响应和耐受性基因表达的调控变异定位
  18. 【观察】迎接5G新时代,亚信科技的原力进化
  19. 2.4万余门课程在线学,22家平台面向全国高校开放
  20. 乙方说丨可攻可受的接客技巧,平衡友谊小船不会翻!

热门文章

  1. Linux GCC make文件的写法4--清晰版
  2. Java中静态代码块、构造代码块的区别
  3. Argparse 使用
  4. C程序设计--指针(用“ 函数 ”对“ 数组 ” 进行操作)
  5. mysql 批量 update 多个条件_Mysql学习与巩固,超详细的小白篇
  6. ckc交易什么意思_在期货交易中,所谓的期货对冲是什么意思?
  7. c++输出的值精确到小数点后5位_直击灵魂——圆周率小数点后3位到12411亿位到底有啥用?...
  8. python小论文范文3000字_完整的论文范文3000字 [论文的名字 ]
  9. 【2015沈阳区域赛F=HDU5514】Frogs(圆上n个青蛙跳统计跳劲哪些点---欧拉函数求和+思维)
  10. html 给一个无限宽,html – CSS div与其内容一样宽