最长公共子序列

点击打开链接时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
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相关推荐

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

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

  2. NYOJ 36 最长公共子序列

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

  3. Bailian2806 公共子序列【最长公共子序列+DP】

    2806:公共子序列 描述 我们称序列Z = < z1, z2, -, zk >是序列X = < x1, x2, -, xm >的子序列当且仅当存在 严格上升 的序列< ...

  4. LeetCode 1035. 不相交的线(最长公共子序列DP)

    文章目录 1. 题目 2. 解题 1. 题目 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数. 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == ...

  5. 最长公共子序列-dp

    一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串. 例如,"ace" 是 " ...

  6. 动态规划问题——最长公共子序列问题

    题目: 给定两个字符串 str1 和 str2 ,返回两个字符串的最长公共子序列. 举例: str1 = "1A2C3D4B56"  str2 = "B1D23CA45B ...

  7. NYOJ最长公共子序列(dp)

    最长公共子序列 描述: 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列. tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common ...

  8. HDU1159(dp最长公共子序列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Problem Description A subsequ ...

  9. DP专辑之最长公共子序列及其变形

    vijos1111(裸的最长公共子序列) 链接:www.vijos.org/p/1111 题解:好久没有写最长公共子序列了,这题就当是复习了.求出最长公共子序列,然后用两个单词的总长度减去最长公共子序 ...

最新文章

  1. 问题1:程序员要做一辈子?
  2. DNN:windows使用 YOLO V1,V2
  3. php a链接怎么传id_PHP函数参数的传递
  4. Toolkit.getDefaultToolkit().getScreenSize();获取显示器屏幕大小并使JFrame窗口居中显示
  5. 用C51编写单片机延时函数
  6. OpenWrt项目:针对嵌入式设备的Linux操作系统
  7. mysql录入图片数据_mysql插入图片数据
  8. 5元的小乌龟吃什么_五月最适合吃这菜,5元一斤,两三天吃一次,鲜嫩正当时好美味...
  9. 隐藏版本信息号返回服务器名,Apache服务器隐藏版本号和系统
  10. 亡命逃窜---三维搜索
  11. 【水果识别】基于matlab GUI自助水果超市【含Matlab源码 594期】
  12. 3d安卓环境搭建_RoboCup 仿真3D简介及环境搭建
  13. Viewpage+小圆点
  14. git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)
  15. java 假设检验_据说假设检验是个很难的题
  16. 【题解】[Swerc2008]First Knight
  17. eclipse中安装的lombok插件不起作用,报错:找不到getter
  18. 客户体验和客户服务的区别
  19. 浅谈AS2 传输/连接
  20. linux三剑客面试题,Linux三剑客之sed

热门文章

  1. git 工作流和git commit规范
  2. Java并发编程:并发容器之CopyOnWriteArrayList(转载)
  3. 使用FastHttpApi构建多人Web聊天室
  4. [链接]C++和Python版本的委托
  5. show processlist解析
  6. 【转载】手把手教你配置Windows2003集群(图)
  7. 在SunOS5.8/solaris7上使用Xerces-C解析器
  8. master excel
  9. UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升...
  10. #define定义宏函数 的正确使用