POJ - 1458(最长公共子序列,动态规划)
题意:
给两个字符串,找到其中最长的公共子序列,输出长度.
解题思路:
一开始想用滚动数组来做,然后无限被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(最长公共子序列,动态规划)相关推荐
- 【ACM】最长公共子序列 - 动态规划
最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长 ...
- C语言(CED)最长公共子序列----动态规划第一题
一.动态规划算法与分治法的异同 相同点: A.二者均是将待求解的问题分成若干子问题来求解. B.二者在编写代码的时候,都要用到递归. 不同点: A.分治法求解的问题,在将问题分成若干子问题之后,其子问 ...
- 最长公共子序列-动态规划(C/C++)
动态规划简述 使用最优子结构特性,动态规划算法采用自底向上的方式计算,在求解的过程中保存已经计算好的子问题的最优解,当子问题的最优解被重复使用时,无需再次计算直接从保存的空间中调用. 举个例子: 斐波 ...
- 最长公共子序列动态规划c语言,动态规划----最长公共子序列(C++实现)
最长公共子序列 题目描述:给定两个字符串s1 s2 - sn和t1 t2 - tm .求出这两个字符串的最长公共子序列的长度.字符串s1 s2 - sn的子序列指可以表示为 - { i1 < i ...
- 最长公共子序列--动态规划(C++)
动态规划与分治方法类似,都是通过组合子问题来求解原问题.分治法将问题分为互不相交的子问题,递归的求解子问题,再将他们的解组合起来,求出原问题的解.相反的,动态规划用于子问题重叠的情况,即不同的子问题具 ...
- 116. Leetcode 1143. 最长公共子序列 (动态规划-子序列问题)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长 公共子序列为dp[i][j] 步骤二.推 ...
- nyoj36最长公共子序列 动态规划
题目链接:http://115.159.40.116/problem_show.php?pid=4648 http://acm.nyist.net/JudgeOnline/problem.php?pi ...
- 最长公共子序列-动态规划-python
题目描述 给定一个长度为 N 数组 a 和一个长度为 M 的数组 b. 请你求出它们的最长公共子序列长度为多少. 输入描述 输入第一行包含两个整数 N,M,分别表示数组 a 和 b 的长度. 第二行包 ...
- 夕拾算法进阶篇:15)最长公共子序列(动态规划DP)
题目描述 给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就把Z叫做X的子序列. 例如:Z=<a,b,f,c>是序列X=<a,b,c ...
- bzoj 2423 [HAOI2010]最长公共子序列 动态规划
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1" ...
最新文章
- 75. InputStreamReader和OutputStreamWriter(转换流--字节流转换成字符流)
- 操作系统:第二章 进程管理1 - 进程、线程
- 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)
- 如何找到一个前端事件对应的事件处理函数
- Netflow的配置方法
- linux timerfd_settime函数,Linux的timerfd分析
- 13. 面向对象的概述
- VC调用Lingo并转化成 QT 工程编写一个特定的解决线性问题的软件
- 云优CMS插件不需要云优CMS授权码的插件
- 图解:冒泡排序及其优化
- 【原】小软件开发心得(二)——推广、测试
- onlyoffice+vue实现在线预览在线编辑
- 元数据是什么?如何管理元数据?
- 关闭iOS上京东app不停询问“京东想从MF839粘贴”,您允许这样做吗? - 允许iphone应用访问剪切板
- centos php 开启libgdgd_linux gd
- mysql 主库innodb从库myisam_MySQL的两种常用数据库存储引擎:MyISAM与InnoDB
- 文献阅读---玉米干旱响应和耐受性基因表达的调控变异定位
- 【观察】迎接5G新时代,亚信科技的原力进化
- 2.4万余门课程在线学,22家平台面向全国高校开放
- 乙方说丨可攻可受的接客技巧,平衡友谊小船不会翻!
热门文章
- Linux GCC make文件的写法4--清晰版
- Java中静态代码块、构造代码块的区别
- Argparse 使用
- C程序设计--指针(用“ 函数 ”对“ 数组 ” 进行操作)
- mysql 批量 update 多个条件_Mysql学习与巩固,超详细的小白篇
- ckc交易什么意思_在期货交易中,所谓的期货对冲是什么意思?
- c++输出的值精确到小数点后5位_直击灵魂——圆周率小数点后3位到12411亿位到底有啥用?...
- python小论文范文3000字_完整的论文范文3000字 [论文的名字 ]
- 【2015沈阳区域赛F=HDU5514】Frogs(圆上n个青蛙跳统计跳劲哪些点---欧拉函数求和+思维)
- html 给一个无限宽,html – CSS div与其内容一样宽