这个好多算法书上都有,不仅限于《算法导论》

时间限制:3000 ms  |  内存限制:65535 KB

难度:3

  • 描写叙述

  • 咱们就不拐弯抹角了,如题。须要你做的就是写一个程序,得出最长公共子序列。

    tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。

    其定义是。一个序列 S ,假设各自是两个或多个已知序列的子序列,且是全部符合此条件序列中最长的。则 S 称为已知序列的最长公共子序列。

    • 输入

    • 第一行给出一个整数N(0<N<100)表示待測数据组数

      接下来每组数据两行,分别为待測的两组字符串。

      每一个字符串长度不大于1000.

    • 输出

    • 每组測试数据输出一个整数,表示最长公共子序列长度。每组结果占一行。

    • 例子输入

    • 2
      asdf
      adfsd
      123abc
      abc123abc
    • 例子输出

    • 3
#include<iostream>
#include<cstring>
#include <string> using namespace std; int a[1010][1010]; int max(int x, int y)
{
return x>y ? x : y;
} int main()
{
int test,i,j,k,len1,len2,lcs;
string s1,s2;
cin>>test;
while(test--)
{
cin>>s1>>s2;
len1=s1.length();
len2=s2.length();
memset(a,0,sizeof(a));
lcs=0;
for(i=1;i<len1+1;i++)
{
for(j=1;j<len2+1;j++)
{
if(s1[i-1]==s2[j-1])
a[i][j]=a[i-1][j-1]+1;
else
a[i][j]=max(a[i][j-1],a[i-1][j]);
if(a[i][j]>lcs)
lcs=a[i][j];
}
}
cout<<lcs<<endl;
}
return 0;
}

最新文章

  1. 图片javascript缩小
  2. 前后端分离工具之ftl-server
  3. gsoap框架下的onvif程序流程分析
  4. 数据结构-多级指针单链表(C语言)
  5. java课堂练习之可变參数与卫条件
  6. [Effective C++ --019]设计class犹如设计type
  7. [Hapi.js] Managing State with Cookies
  8. javascript无缝全屏轮播
  9. Glide的加载图片的帮助类,用来把图片圆角或者改成圆形图片
  10. T-SQL 创建、修改、删除数据库,表语法
  11. MySQL_数据分页查询(limit用法)
  12. Discuz3.4-SSRF-从触发点到构造payload
  13. 浅析Kubernetes的工作原理
  14. 用Ubuntu快速安装Jenkins
  15. git server 配置
  16. poj2987 求最大权闭合回路
  17. canvas学习之树叶动画
  18. 【POJ3171】Cleaning Shifts 带权区间最小覆盖
  19. iOS开发中id、NSObject *、id、instancetype四者有什么区别?
  20. Jmeter--正则表达式提取器

热门文章

  1. Linux下读写寄存器
  2. Rdis-主从复制
  3. ORACLE11g R2【单实例 FS→单实例FS】
  4. 使用Docker来运行WebApp
  5. 人工智能计算器AI Calculator 3.3.0 具体破解思路&amp;amp;教程
  6. jQuery的实现原理和核心
  7. 应用Python来计算排列中的逆序数个数
  8. 错误代码: 1449 The user specified as a definer (&amp;#39;root&amp;#39;@&amp;#39;%&amp;#39;) does not exist
  9. netty reactor线程模型分析
  10. Altium Designer如何移动选中的所有对象