c 最大子序列和_算法总结:左神class8—跳台阶+最长递增公共子序列

【跳台阶】有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法?

baa4ac4471ac85b6ea1cfa125ed1a3cd.png

public int s1(int n){  if (n< 1){  return 0;  if(n == 1 || n== 2){   return n;   return s1(n - 1) +s1(n - 2);}

2b4d40ba736292bbdec4a5f13e71837b.png

【最长递增子序列长度】给定数组arr,返回arr的最长递增子序列长度。比如arr=[2,1,5,3,6,4,8,9,7],最长递增子序列为[1,3,4,8,9],所以返回这个子序列的长度5。给定数组arr,返回arr的最长递增子序列长度。比如arr=[2,1,5,3,6,4,8,9,7],最长递增子序列为[1,3,4,8,9],所以返回这个子序列的长度5。

【解】先生成长度为5的数组dp,dp[i]表示在必须以arr[i]这个数结尾的情况下,arr[0..i]中的最大递增子序列长度。

68a9339cab897573f1c9ba8a3a5c6aca.png

arr[0]时,第一个最大递增子序列只有自己dp[0]=1;

接下来从左到右依次算出每个位置的数结尾的情况下最长递增子序列的长度。假设计算到位置i,求以i结尾的最长递增子序列长度,也就是dp[i]的值;如果最长递增子序列长度必须以arr[i]结尾,那么在arr[0……i-1]中所有比arr[i]小的数均可作为倒数第二个数,在这些数中,以哪个结尾的最长递增子序列长度最大选哪个作为倒数的第二个数;,故状态方程为arr[0……i-1]中所有数都不比arr[i]小,另dp[i]=1即可;说明必须以arr[i]结尾的最大递增子序列只包含arr[i]。

5eb6df0c69d277e4448f0b7e4dfb10e0.png

845d5bbeb05becf336dc4d188cc7fb05.png

bcb046db4ca5d7bf56ebbd89273423d7.png

【最长公共子序列】给定两个字符串str1和str2,返回两个字符串的最长公共子序列。例如,str1="1A2C3D4B56"str2="B1D23CA45B6A”,”123456"或者"12C4B6"都是最长公共子序列,返回哪一个都行。

假设str1的长度为M, str2的长度为N,生成大小为M*N的矩阵dp.dp[i][j]的含义是str1[0..i]与str2[0..j]的最长公共子序列的长度。

dp求法如下:

        1、矩阵dp第一列,即dp[i][0],代表str1[0..i]与str2[0]的最长公共子序列长度。str2[0]只有一个字符,所以dp[i][o]最大为1。

如果str1[i]==str2[0],则令dp[i][0]为1一旦dp[i][0]被设为1,则令dp[i+i..M][0]全部为1

    2、矩阵dp第一行,即dp[0][j],与步骤1同理。如果stri[0]==str2[j],则令dp[0][j]为1,一且dp[0][j]被设为1,则令dp[0][j+1..N]全部为1

    3、其他位置,dp[i][jl的值只可能来自以下三种情况∶

    情况1∶可能是dp[i-1][j]的值。这代表str1[0..i-1]与str2[0..j]的最长公共子序列长度。

    举例:str1="A1BC2",str2="AB34C".

str1[0..3]为”A1BC",str2[0..4]为”AB34C”,这两部分最长公共子序列为“ABC”,即dp[3][4]为3。str1整体和str2整体最长公共子序列也是"ABC”,所以dp[4][4]可能来自dp[3][4]。

    情况2∶同理可知,dp[i][]的值也可能是dp[i][j-1]。

    情况3:如果str1[i]==str2[j],还可能是dp[i-1][j-1]+1的值。

    举例:比如str1="ABCD" ,str2="ABCD" .str1[0..2]即”ABC"与str2[0..2]即"ABC"的最长公共子序列为"ABC”,也就是dp[2][2]为3。因为str1和str2的最后一个字符都是”D”,所以dp[i][j]=dp[i-1][j-1]+1。

三种可能的值中,选最大值作为dp[i][j]的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载]dynamic的小坑--RuntimeBinderException:“object”未包含“xxx”的定义

创建一个控制台项目和一个类库项目, 在类库中创建一个匿名对象&#xff0c;然后在控制台中访问它&#xff0c;代码如下&#xff1a; 控制台: namespace ConsoleApplication1 {class Program{static void Main(string[] args){dynamic dyc ClassLibrary1.TestClass.Test();Cons…

第5篇K8S创建资源的两种方式

一、创建方式分类&#xff1a;命令 vs 配置文件Kubernetes 支持两种方式创建资源&#xff1a;1.用 kubectl 命令直接创建&#xff0c;比如&#xff1a;kubectl run httpd-app --imagereg.yunwei.edu/learn/httpd:latest --replicas2在命令行中通过参数指定资源的属性。2. 通过配…

bind安装配置以及应用

实验环境&#xff1a;两台centos6.6服务器&#xff0c;主DNS服务器IP为172.26.249.29&#xff0c;从DNS服务器IP为172.16.249.98&#xff0c;解析域名为stu07.com一、主DNS服务器搭建1、 检查系统是否安装bind包&#xff0c;否则用yum安装2、安装好bind包后&#xff0c;编辑主…

ADT Running Android Lint has encountered a problem

解决办法&#xff1a; Window--->Preferences----->Android--------> LInt Error Checking----->when saving files, check for errors 。去掉勾选 如果此方法还行不通&#xff0c;可能是你系统是64位的&#xff0c;但是安装的却是32位的eclipse&#xff01; 重装个…

生产计划到底该怎样改进?这6点帮你节省至少60%的计划时间

生产计划贯穿了价值创造的全过程&#xff1a;从概念到投产的设计过程、从订货到送货的信息流通处理过程、从原材料到产成品的物质转换过程以及全生命周期的支持和服务过程&#xff0c;涉及每一个部门&#xff0c;每一个人。 生产计划管理就是计划调动一切资源&#xff0c;快速、…

mysql 连接数测试_mysql最大连接数试验

一、试验基础环境配置1、查看当前数据库的最大连接数mysql> show global variables like %connect%;-------------------------------------------| Variable_name | Value |-------------------------------------------| character_set_connection | utf8 || collation_co…

10个机器学习人工智能开发框架和AI库(优缺点对比表)/贪心学院

概述 通过本文我们来一起看一些用于人工智能的高质量AI库&#xff0c;它们的优点和缺点&#xff0c;以及它们的一些特点。 人工智能&#xff08;AI&#xff09;已经存在很长时间了。然而&#xff0c;由于这一领域的巨大进步&#xff0c;近年来它已成为一个流行语。人工智能曾经…

大数据时代的数据存储,非关系型数据库MongoDB(一)(转)

出处&#xff1a;http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中&#xff0c;关系型数据库&#xff08;Relational Database Management System&#xff09;一直是最主流的数据库解决方案&#xff0c;他运用真实世界中事物与…

在一个类型的继承体系中,成员的构造顺序

先看代码&#xff0c;写出结果 class A { public A() { PrintFields(); } public virtual void PrintFields(){} } class B:A { int x1; int y; public B…

IntelliJ IDEA+Mysql connecter/j JDBC驱动连接

在IntelliJ IDEA中用connecter/j jdbc驱动连接MYSQL 以下是解决过程&#xff0c;待整合。。。有点懒&#xff0c;有空再改 官方文档&#xff1a;https://www.cnblogs.com/cn-chy-com/p/10145690.html 创建了mysql新用户&#xff1a;https://blog.csdn.net/weixin_38091140/arti…

mysql类exadata功能_Exadata V2数据库一体机的几大致命缺点

昨天客户语重心长的告诉我&#xff0c;他们准备把Exadata V2 上的核心应用迁移走&#xff0c;客户在09年就开始用Exadata&#xff0c;是不是国内第一家我不知道&#xff0c;但至少应该是用于生产的第一批。但是这2年来因为Exadata折腾了无数次&#xff0c;现在终于不想折腾了。…

mysql gtid寻找位置_【MySQL】UUID与GTID以及如何根据GTID找寻filename和position

Open Group于1997年10月发布&#xff0c;UUID遵从此协议。UUID被设计成一个在空间和时间上的唯一值。两次调用的UUID将产生两个不同的值&#xff0c;即使这些调用是在两个不连接的&#xff0c;彼此独立的计算机。由一串数字表示aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeformat:mys…

(56)zabbix Screens视图配置

screen翻译成中文为“屏幕”&#xff0c;在超市、单位等等地方都比较常见到监控视频&#xff0c;视频上有多块小视频&#xff0c;实际上zabbix screen和这个功能类似。你可以设置多个screen&#xff0c;每个screen可以显示特定信息&#xff0c;例如某台主机的cpu、内存、硬盘、…

spacy库的安装与使用_为 SpaCy 提供的中文数据模型

SpaCy 中文模型为 SpaCy 提供的中文数据模型. 模型目前还处于 beta 公开测试的状态 。在线演示基于 Jupyter notebook 的在线演示在 。 特性部分 王小明在北京的清华大学读书 这个 Doc 对象的属性信息:NER (New!)部分 王小明在北京的清华大学读书 这个 Doc 对象的 NER 信息:开始…

ASP对很长的文章做分页输出

阅读: 1 评论: 0 作者: eng308 发表于 2010-02-03 10:33 原文链接利用统计文章字数&#xff0c;然后达到一定字数就截断输出&#xff0c;但是分页的内容就会在莫名其妙的地方截断&#xff0c;不是很友好。很简单&#xff0c;在要截断的地方附近找下面的符号:&#xff1b;’”&a…

软件性能测试的本质

为什么80%的码农都做不了架构师&#xff1f;>>> ‍ 淘宝网每年的双11活动都是对其服务器性能的挑战。因为在这一天所有商品半价&#xff0c;购物的用户量剧增。做为淘宝网的高层更多的关心在线用户数&#xff0c;用户交易量&#xff0c;总交易金额等&#xff0c;做…

mysql周报内容范文_Mysql各种报表查询含实例,日报,周报,月报,时间差自动计算...

public List retrieve(IReport report) {List list new ArrayList();Map map new HashMap();// 设置结束日期if (null ! report.getEndTime()) {map.put(ReportMeta.PROP_ENDTIME, report.getEndTime());// 设置名称if (null ! report.getName()) {map.put(ReportMeta.PROP_N…

路由器01---k2刷Pandora

1.固件 固件(Firmware)就是写入EPROM&#xff08;可擦写可编程只读存储器&#xff09;或EEPROM(电可擦可编程只读存储器)中的程序。 对于独立可操作的电子产品&#xff0c;固件一般指它的操作系统&#xff08;“担任着一个数码产品最基础、最底层工作的软件才可以称之为固件”&…

python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍

squeeze的用法主要就是对数据的维度进行压缩或者解压。先看torch.squeeze() 这个函数主要对数据的维度进行压缩&#xff0c;去掉维数为1的的维度&#xff0c;比如是一行或者一列这种&#xff0c;一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。squeeze(a)就是…

新闻网大数据实时分析可视化系统项目——7、Kafka分布式集群部署

Kafka是由LinkedIn开发的一个分布式的消息系统&#xff0c;使用Scala编写&#xff0c;它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。 1.下载Kafka并安装 1&#xff09;下载Apache版本的Kafka。 …