2017蓝桥杯B组:最长公共子序列(动态规划详解(配图))
最大公共子串长度问题就是:
求两个串的所有子串中能够匹配上的最大长度是多少。
比如:“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组:最长公共子序列(动态规划详解(配图))相关推荐
- 2018第九届蓝桥杯JavaB组省赛真题及详解
2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...
- 最长公共子序列 (LCS) 详解+例题模板(全)
欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...
- 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯2018年省赛真题超详解
蓝桥杯2018年省赛真题超详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第一题:第几天 1.2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需 ...
- nyoj36最长公共子序列 动态规划
题目链接:http://115.159.40.116/problem_show.php?pid=4648 http://acm.nyist.net/JudgeOnline/problem.php?pi ...
最新文章
- c语言统计输入文本不同字母单词数,【C语言统计不同单词个数编写一个程序,输入一个句子,然后统计-查字典问答网...
- node.js入门 - 12.api:进程(process)
- Windows10开发手记-RelativePanel使用详解
- ZAM 3D入门教程(3):Viewport
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
- openMP学习笔记(一)
- LEBERT:基于词汇增强的中文NER模型
- CRNN+CTC (基于CTPN 的end-to-end OCR)
- unity newtonsoft 反序列化报空_基于Unity3D的大地形研究(2):资源序列化与材质加载...
- 5天学会jaxws-webservice编程第一天
- Javascript心得(一) Javascript数据类型
- UDS协议(史上最全)
- qnap威联通作文件服务器,QNAP 威联通 TS-453A NAS存储服务器 开箱初体验
- 域名申请:一定要进行实名认证吗?
- Golang + HTML5 实现多文件上传
- Matlab龚珀兹曲线模型预测,第三章 趋势曲线模型预测法.ppt
- 关于雪花算法id冲突的思考解决思路
- Kafka能作为数据库使用吗
- 渐变折射率(GRIN)多模光纤的建模
- 天猫tf卡速度测试软件,迟到的晒单:天猫5块9包邮的32GBTF卡拆箱评测
热门文章
- 如何自学python知乎-你们都是怎么学 Python 的?
- python在财务中的应用-财务人要学Python吗?
- python计算工资编程-Python工程师薪水居然这么高
- python和java哪个好找工作-2019年Python、Java、C++学哪个更好?薪资更高?
- python中文叫什么-在python中,quot;~”是什么意思?
- 【动态规划】01背包问题:猫狗大战
- 【java笔记】线程状态
- ios获取新数据要不要关_iPhone用户注意!不要再滑动关后台,否则……
- 域控下更改服务器密码策略,修改windows-2008-域控服务器密码策略
- java 多线程 信号量_Java核心-多线程(7)-并发控制器-Semaphore信号量