最大公共子串长度问题就是:

求两个串的所有子串中能够匹配上的最大长度是多少。

比如:“abcdkkk” 和"baabcdadabc",

可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。

下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。

请分析该解法的思路,并补全划线部分缺失的代码。
题目所给代码

#define N 256
int f(const char* s1, const char* s2)
{int a[N][N];int len1 = strlen(s1);int len2 = strlen(s2);int i,j;memset(a,0,sizeof(int)*N*N);int max = 0;for(i=1; i<=len1; i++){for(j=1; j<=len2; j++){if(s1[i-1]==s2[j-1]) {--------------;  //填空if(a[i][j] > max) max = a[i][j];}}}return max;
}
int main()
{printf("%d\n", f("abcdkkk", "baabcdadabc"));return 0;
}
  • 分析思路
    这道题不是递归,看代码的格式看出是一道动态规划
    下面举例说明匹配问题
    s1:abcd
    s2:bcd
    求它们的最长公共子序列为bcd,长度为3


s1:abefecd
s2:becd
最长公共子序列ecd

  • 代码
#include<iostream>
#include<cstring>
using namespace std;#define N 256
int f(const char* s1, const char* s2)
{int a[N][N];int len1 = strlen(s1);int len2 = strlen(s2);int i,j;memset(a,0,sizeof(int)*N*N);int max = 0;for(i=1; i<=len1; i++){for(j=1; j<=len2; j++){if(s1[i-1]==s2[j-1]) {a[i][j] = a[i-1][j-1]+1;  //填空if(a[i][j] > max) max = a[i][j];}}}return max;}     int main(){printf("%d\n", f("abcdkkk", "baabcdadabc"));return 0;}

自己可以看出这两个字符串的最长公共子序列为abcd,所以长度为4
也可以自己写两个字符串试一下

2017蓝桥杯B组:最长公共子序列(动态规划详解(配图))相关推荐

  1. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

  2. 最长公共子序列 (LCS) 详解+例题模板(全)

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...

  3. 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  4. 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  5. 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  6. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  7. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  8. 蓝桥杯2018年省赛真题超详解

    蓝桥杯2018年省赛真题超详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第一题:第几天 1.2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需 ...

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

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

最新文章

  1. c语言统计输入文本不同字母单词数,【C语言统计不同单词个数编写一个程序,输入一个句子,然后统计-查字典问答网...
  2. node.js入门 - 12.api:进程(process)
  3. Windows10开发手记-RelativePanel使用详解
  4. ZAM 3D入门教程(3):Viewport
  5. 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
  6. openMP学习笔记(一)
  7. LEBERT:基于词汇增强的中文NER模型
  8. CRNN+CTC (基于CTPN 的end-to-end OCR)
  9. unity newtonsoft 反序列化报空_基于Unity3D的大地形研究(2):资源序列化与材质加载...
  10. 5天学会jaxws-webservice编程第一天
  11. Javascript心得(一) Javascript数据类型
  12. UDS协议(史上最全)
  13. qnap威联通作文件服务器,QNAP 威联通 TS-453A NAS存储服务器 开箱初体验
  14. 域名申请:一定要进行实名认证吗?
  15. Golang + HTML5 实现多文件上传
  16. Matlab龚珀兹曲线模型预测,第三章 趋势曲线模型预测法.ppt
  17. 关于雪花算法id冲突的思考解决思路
  18. Kafka能作为数据库使用吗
  19. 渐变折射率(GRIN)多模光纤的建模
  20. 天猫tf卡速度测试软件,迟到的晒单:天猫5块9包邮的32GBTF卡拆箱评测

热门文章

  1. 如何自学python知乎-你们都是怎么学 Python 的?
  2. python在财务中的应用-财务人要学Python吗?
  3. python计算工资编程-Python工程师薪水居然这么高
  4. python和java哪个好找工作-2019年Python、Java、C++学哪个更好?薪资更高?
  5. python中文叫什么-在python中,quot;~”是什么意思?
  6. 【动态规划】01背包问题:猫狗大战
  7. 【java笔记】线程状态
  8. ios获取新数据要不要关_iPhone用户注意!不要再滑动关后台,否则……
  9. 域控下更改服务器密码策略,修改windows-2008-域控服务器密码策略
  10. java 多线程 信号量_Java核心-多线程(7)-并发控制器-Semaphore信号量