这是一道求最长公共子串的题,首先得是公共子串,其次是长度得最长,再求其个数。

我们可以运用动态规划求解这题,设dp[i][j]的值为第一个序列的前i个子序列与第二个序列的前j个子序列的的最长公共子序列的个数。设str1(第一个序列的子序列个数),str2(第二个序列的子序列个数);当str1[i]==str2[j]时,两个子序列相等,dp[i][j]==dp[i-1][j-1]+1,相当于前i,j个的最长公共子序列的个数就等于i-1,j-1个的最长公共子序列的个数再+1,毕竟多了一次相等的情况,str1[i]!=str2[j]时,两个子序列不相等,dp[i][j]==max(dp[i-1][j],dp[i][j-1]),相当于往回走,此时的第一个序列的前i个子序列与第二个序列的前j个子序列的的最长公共子序列的个数取前面两种情况的最大值。

#include <iostream>
#include <algorithm>
using namespace std;
int dp[1005][1005];
string s1, s2;//要输入的两个序列
string str1[1005], str2[1005];//记录两个序列的所有子序列
int cnt1, cnt2;
int main()
{cin >> s1 >> s2;int d1 = s1.length(), d2 = s2.length();for (int i = 0; i < d1;){cnt1++;if (s1[i] >= 'A' && s1[i] <= 'Z')//子序列首字母大写,后几位全小写{str1[cnt1] += s1[i++];while (s1[i] >= 'a' && s1[i] <= 'z'){str1[cnt1] += s1[i++];}  }}for (int i = 0; i < d2;){cnt2++;if (s2[i] >= 'A' && s2[i] <= 'Z'){str2[cnt2] += s2[i++];while (s2[i] >= 'a' && s2[i] <= 'z'){str2[cnt2] += s2[i++];}   }}for (int i = 1; i <= cnt1; i++)//遍历所有子序列for (int j = 1; j <= cnt2; j++){if (str1[i] == str2[j]) dp[i][j] = dp[i - 1][j - 1] + 1;//这里上文已解释过else dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);}cout << dp[cnt1 ][cnt2 ] << endl;return 0;
}

[蓝桥杯]蓝肽子序列(c++详解)相关推荐

  1. 蓝桥杯 蓝肽子序列 python(2020动态规划)

    蓝桥杯 蓝肽子序列 python(2020动态规划) 题目描述 L 星球上的生物由蛋蓝质组成,每一种蛋蓝质由一类称为蓝肽的物资首尾连接成一条长链后折叠而成. 生物学家小乔正在研究 L 星球上的蛋蓝质. ...

  2. 蓝桥杯——蓝肽子序列

    蓝肽子序列 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 问题描述   L 星球上的生物由蛋蓝质组成,每一种蛋蓝质由一类称为蓝肽的物资首尾连接成一条长链后折叠而成.   生物学 ...

  3. 49-2017年第八届蓝桥杯国赛试题及详解(Java本科B组)

    蓝桥杯历年真题题目及题解目录汇总(推荐) 蓝桥杯算法模板常用套路及API等个人总结 ---------------------------------------------------------- ...

  4. 蓝桥杯-K好数(详解易懂)java

    蓝桥杯-K好数java 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数 ...

  5. 2013年第四届蓝桥杯国赛试题及详解(Java本科B组)

    蓝桥杯历年真题题目及题解目录汇总 结果填空 (满分10分) 结果填空 (满分12分) 代码填空 (满分8分) 程序设计(满分17分) 程序设计(满分22分) 程序设计(满分31分) 1.标题:猜灯谜 ...

  6. 2014年第五届蓝桥杯省赛试题及详解(Java本科A组)

    蓝桥杯历年真题题目及题解目录汇总  结果填空 (满分2分) 结果填空 (满分6分) 结果填空 (满分7分) 代码填空 (满分4分) 代码填空 (满分12分) 结果填空 (满分12分) 结果填空 (满分 ...

  7. 【从零到蓝桥杯省一】算法详解之深度优先搜索

    前言 大家好,我是泡泡,一名算法爱好者,在学习算法的这条路上有很多的坎坷与'大山',想必各位都深有体会,我认为学习算法的几个很卡的点,首当其冲就是深度优先搜索和广度优先搜索,虽然理解了是什么意思但是完 ...

  8. 【蓝桥杯JavaB组真题详解】振兴中华(2013)

    题目描述 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子. 地上画着一些格子,每个格子里写一个字,如下所示: 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时,先站在左上角的写着 ...

  9. [蓝桥杯]天干地支(c++详解)

    题目描述 古代中国使用天干地支来记录当前的年份. 天干一共有十个,分别为:甲(jiǎ).乙(yǐ).丙(bǐng).丁(dīng).戊(wù).己(jǐ).庚(gēng).辛(xīn).壬(rén). ...

最新文章

  1. linux man命令无效,Linux man命令的具体使用
  2. Linux expect与Shell交互
  3. javascript做极简时钟特效,再简单没思路你也做不出来
  4. php 服务定位,服务定位器(Service Locator)
  5. linux下intel无线网卡安装失败,ubuntu 16.04无法安装无线网卡驱动
  6. Ubuntu18.04LTS+Anaconda+Tensorflow-GPU安装记录
  7. Linux定时器的简单使用
  8. ZeroMQ接口函数之 :zmq_proxy – 开始ZMQ内置代理
  9. 搜狗关键词挖掘工具,搜狗权重关键词挖掘工具
  10. 001信息化和信息系统
  11. 公积金贷款逾期预测Baseline分享
  12. 如何化解濒临离婚边缘的婚姻危机
  13. 中国少数民族艺术类毕业论文文献都有哪些?
  14. 【js】复选框,复选下拉框,文本框勾连
  15. 车载平板android 002,用平板代替车载大屏,行得通吗?
  16. java 山洞过火车 java,我的世界稀有PE种子:罕见双层末地门!
  17. Python-自动下载抖音无水印高清视频
  18. 阿里云服务器(centos)安装MySQL
  19. Android中Dialog数据的获取报错空指针问题
  20. 数字图像处理之图像增强

热门文章

  1. LimeSDR srsLTE实验
  2. unity 《王者荣耀》帧同步开发教程
  3. 序幕(计算机基础知识)
  4. leetcode-94
  5. AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名
  6. 功能超全的库存管理系统,拿来学习真香
  7. 深信服“监控员工跳槽倾向”引争议,律师称未告知员工涉嫌违法
  8. 如何快速在Mac 安装 jq 命令行 JSON 解析器
  9. load函数matlab,『matlab load函数的用法』如何把matlab中的数据导到excel表格中
  10. 汇编idiv带符合除法指令。。。。