NYOJ 36 最长公共子序列 dp
最长公共子序列
- 描述
-
咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。- 输入
-
第一行给出一个整数N(0<N<100)表示待测数据组数
接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于1000. - 输出
- 每组测试数据输出一个整数,表示最长公共子序列长度。每组结果占一行。
- 样例输入
-
2 asdf adfsd 123abc abc123abc
- 样例输出
-
3 6
这也是一个动态规划问题,下面是动态转移方程:
dp[i][j]=dp[i-1][j-1]+1; (str1[i-1]==str2[j-1]) dp[i][j]=max(dp[i-1][j],dp[i][j-1]); (str1[i-1]!=str2[j-1])
AC代码:
#include<stdio.h> #include<string.h> #define max(a,b) a>b?a:b; int dp[1010][1010]; char str1[1010],str2[1010]; int main() { int len1,len2,i,j,n; scanf("%d",&n); while(n--) { scanf("%s",str1); scanf("%s",str2); len1=strlen(str1); len2=strlen(str2); memset(dp,0,sizeof(dp)); 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]=max(dp[i-1][j],dp[i][j-1]); } printf("%d\n",dp[len1][len2]); } return 0; }
NYOJ 36 最长公共子序列 dp相关推荐
- nyoj 36 最长公共子序列 dp问题最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共
最长公共子序列 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称 ...
- NYOJ 36 最长公共子序列
最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长 ...
- Bailian2806 公共子序列【最长公共子序列+DP】
2806:公共子序列 描述 我们称序列Z = < z1, z2, -, zk >是序列X = < x1, x2, -, xm >的子序列当且仅当存在 严格上升 的序列< ...
- LeetCode 1035. 不相交的线(最长公共子序列DP)
文章目录 1. 题目 2. 解题 1. 题目 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数. 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == ...
- 最长公共子序列-dp
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串. 例如,"ace" 是 " ...
- 动态规划问题——最长公共子序列问题
题目: 给定两个字符串 str1 和 str2 ,返回两个字符串的最长公共子序列. 举例: str1 = "1A2C3D4B56" str2 = "B1D23CA45B ...
- NYOJ最长公共子序列(dp)
最长公共子序列 描述: 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common ...
- HDU1159(dp最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Problem Description A subsequ ...
- DP专辑之最长公共子序列及其变形
vijos1111(裸的最长公共子序列) 链接:www.vijos.org/p/1111 题解:好久没有写最长公共子序列了,这题就当是复习了.求出最长公共子序列,然后用两个单词的总长度减去最长公共子序 ...
最新文章
- 问题1:程序员要做一辈子?
- DNN:windows使用 YOLO V1,V2
- php a链接怎么传id_PHP函数参数的传递
- Toolkit.getDefaultToolkit().getScreenSize();获取显示器屏幕大小并使JFrame窗口居中显示
- 用C51编写单片机延时函数
- OpenWrt项目:针对嵌入式设备的Linux操作系统
- mysql录入图片数据_mysql插入图片数据
- 5元的小乌龟吃什么_五月最适合吃这菜,5元一斤,两三天吃一次,鲜嫩正当时好美味...
- 隐藏版本信息号返回服务器名,Apache服务器隐藏版本号和系统
- 亡命逃窜---三维搜索
- 【水果识别】基于matlab GUI自助水果超市【含Matlab源码 594期】
- 3d安卓环境搭建_RoboCup 仿真3D简介及环境搭建
- Viewpage+小圆点
- git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
- java 假设检验_据说假设检验是个很难的题
- 【题解】[Swerc2008]First Knight
- eclipse中安装的lombok插件不起作用,报错:找不到getter
- 客户体验和客户服务的区别
- 浅谈AS2 传输/连接
- linux三剑客面试题,Linux三剑客之sed
热门文章
- git 工作流和git commit规范
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- 使用FastHttpApi构建多人Web聊天室
- [链接]C++和Python版本的委托
- show processlist解析
- 【转载】手把手教你配置Windows2003集群(图)
- 在SunOS5.8/solaris7上使用Xerces-C解析器
- master excel
- UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升...
- #define定义宏函数 的正确使用