2022-08-18:每一个序列都是[a,b]的形式,a < b 序列连接的方式为,前一个序列的b,要等于后一个序列的a 比如 : [3, 7]、[7, 13]、[13, 26]这三个序列就可以依次连
2022-08-18:每一个序列都是[a,b]的形式,a < b
序列连接的方式为,前一个序列的b,要等于后一个序列的a
比如 : [3, 7]、[7, 13]、[13, 26]这三个序列就可以依次连接
给定若干个序列,求最大连接的数量
定义尝试过程如下
arr[i] = {4, 9}表示,第i个序列4开始,9结束
pre : 代表选择的上一个序列,的,index是多少
比如选择的上一个序列如果是(4,9),是第5个序列,那么pre5
特别注意:如果从来没有选过序列,那么pre == -1
这个函数含义 :
index…所有的序列,随便选择。index之前的序列,不能选择
上一个选择的序列,是pre号,如果pre-1,说明之前没有选择过序列
返回题目要求的那种连接方式下,最大的序列数量
[5,13] [1,19] [2, 3] [79, 81] …
[1,19] [2, 3] [5, 13] [79, 81]
arr[i][0] : 开头
arr[i][1] : 结尾
arr已经根据开头排过序了!
preEnd index
[1, 3] [2, 4] [4, 7]
0 1 2
maxLen(0, -1)
0(选) -> maxLen(1, 0)
在arr[index…]选择序列,之前选的,离index最近的序列,位置在preIndex
请返回,index…能链接起来的,序列数量的最大值
答案2022-08-18:
递归。要i还是不要i。
时间复杂度:O(N**2)。
代码用rust编写。代码如下:
fn main() {
let mut arr: Vec<Vec<i32>> = vec![vec![1, 3], vec![3, 4], vec![4, 7]];
let ans1 = max_len(&mut arr, 0, -1);
println!("ans1 = {}", ans1);
let ans1 = max_number_subsequence(&mut arr, 0, -1);
println!("ans2 = {}", ans1);
}
fn max_len(arr: &mut Vec<Vec<i32>>, index: i32, pre_index: i32) -> i32 {
if index == arr.len() as i32 {
return 0;
}
// 还有序列可以选
// index号序列
// 不选
let p1 = max_len(arr, index + 1, pre_index);
// 选
let mut p2 = 0;
// [3,17] index(9,24)
if pre_index == -1 || arr[pre_index as usize][1] == arr[index as usize][0] {
// 才能选
p2 = 1 + max_len(arr, index + 1, index);
}
return get_max(p1, p2);
}
// O(N^2)
fn max_number_subsequence(arr: &mut Vec<Vec<i32>>, index: i32, pre: i32) -> i32 {
if index == arr.len() as i32 {
return 0;
}
// 就是不要当前序列
let p1 = max_number_subsequence(arr, index + 1, pre);
// 要当前序列
let mut p2 = -1;
if pre == -1 || arr[pre as usize][1] == arr[index as usize][0] {
p2 = 1 + max_number_subsequence(arr, index + 1, index);
}
return get_max(p1, p2);
}
fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T {
if a > b {
a
} else {
b
}
}
执行结果如下:

2022-08-18:每一个序列都是[a,b]的形式,a < b 序列连接的方式为,前一个序列的b,要等于后一个序列的a 比如 : [3, 7]、[7, 13]、[13, 26]这三个序列就可以依次连的更多相关文章
- 面试一个 3 年 Java 程序员,一个问题都不会!
大家周末愉快,当你看到这篇文章的时候,事情已经过去几天了. 刚从洽谈室走出来,心情很复杂! 栈长面试过很多人,不乏知识渊博.技能顶尖的选手,但从未遇到过工作了三年,却一个问题都答不上来.. 这场史无前 ...
- Sql Server 中如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗
提问: 如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗? 如果在.Net中用TransactionScope开启一个事务. 然后在该事务范围内启动两个 ...
- 13.mutiset树每一个结点都是一个链表的指针,可以存储相同的数据
#include <iostream> //红黑树(自动保证平衡,自动生成平衡查找树) #include <set> #include <cstring> #inc ...
- week07 13.4 NewsPipeline之 三 News Deduper
还是循环将Q2中的东西拿出来 然后查重(去mongodb里面把一天之内的新闻都拿出来,然后把拿到的新的新闻和mongodb里一天内的新闻组一个 tf-idf的对比)可看13.3 相似度检查 如果超过一 ...
- VC中出现“烫”和“屯”的原因(栈区的每一个字节都被0xCC填充了,也就是int 3h的机器码,动态分配的堆,VC的Debug用0xCD填充堆的空间,就出现了“屯”)
相信经常用VC的朋友对屏幕输出的一大堆“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”不会陌生,但是也许会很奇怪,为什么会出现“烫”字呢?莫非改程序导致系统运行缓慢,发热过高???非也!下面让我解释 ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- 【洛谷P1827】【USACO】 美国血统 American Heritage 由二叉树两个序列求第三个序列
P1827 美国血统 American Heritage 题目描述 农夫约翰非常认真地对待他的奶牛们的血统.然而他不是一个真正优秀的记帐员.他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的&q ...
- 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记
第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...
- VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt
VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt Form1 内代码如下: ' 2022年8月22日 15时15分 ' 作者:name.vt Private Sub cmdCle ...
随机推荐
- Pytorch基础复习
项目推进中期,重新到头来学Pytorch.five落泪了.(╬▔皿▔)凸 笑死,憋不住了,边更边学. 整篇博客整体采用总分总形式.首先将介绍内容(加黑部分)之间关系进行概括,后拆解,最后以图总结. 全 ...
- Java笔记第五弹
编码表 将字符存储到计算机中----编码:反之,则为解码: GBK编码:最常用的中文码表 GB18030--最新的中文码表 Unicode字符集:业界的一种标准,也称为统一码.万国码 UTF-8编码: ...
- Python查找存储区0KB文件并记录下地址
查找存储区域中0KB大小文件,可以根据需要变更指定大小. #-*- coding: utf-8 -*- #!/usr/bin/python from os.path import isdir,absp ...
- arc145前三题
为什么只有前三题呢...第四题想了一个小时没思路(主要是半个小时的时候发现看错题了),然后看粉兔博客发现要用Cantor集一类的神奇玩意,手贱看了E题发现还是线性基.于是就run了.NOIP前再学吧 ...
- 你需要知道的 14 个常用的 JavaScript 函数
1.确定任意对象的具体类型 众所周知,JavaScript 中有六种原始数据类型(Boolean.Number.String.Null.Undefined.Symbol)和一个对象数据类型.但是你知道 ...
- DevOps|研发效能价值如何衡量
现在很多公司都在做或者计划做研发效能,也知道研发效能工作很重要,能提高产研运同学的协同效率,提高员工的工作效率和质量,提高业务交付效率和交付质量,但是价值有多大?效率又有多高呢?因为不容易说清楚,所以 ...
- ASP.NET Core - 缓存之内存缓存(上)
1. 缓存 缓存指的是在软件应用运行过程中,将一些数据生成副本直接进行存取,而不是从原始源(数据库,业务逻辑计算等)读取数据,减少生成内容所需的工作,从而显著提高应用的性能和可伸缩性,使用好缓存技术, ...
- 多台服务器之间配置ssh免密登录
需求:假设有N台服务器,N台服务器之间都需要配置相互间免密登录 步骤1:在一台服务器上安装ansible yum -y install epel-release && yum -y ...
- c++实战开发程序
非常感谢您的进一步提问,以下是一个对于实战开发小程序的更具体的建议: 第1周实战开发小程序建议:写一个简单的计算器程序,要求包含加.减.乘.除四种基本运算,并进行错误处理,例如输入了非法字符或者除数为 ...
- 【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理
ExceptionHandler的作用 ExceptionHandler是Spring框架提供的一个注解,用于处理应用程序中的异常.当应用程序中发生异常时,ExceptionHandler将优先地拦截 ...