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
}
}

执行结果如下:


左神java代码

2022-08-18:每一个序列都是[a,b]的形式,a < b 序列连接的方式为,前一个序列的b,要等于后一个序列的a 比如 : [3, 7]、[7, 13]、[13, 26]这三个序列就可以依次连的更多相关文章

  1. 面试一个 3 年 Java 程序员,一个问题都不会!

    大家周末愉快,当你看到这篇文章的时候,事情已经过去几天了. 刚从洽谈室走出来,心情很复杂! 栈长面试过很多人,不乏知识渊博.技能顶尖的选手,但从未遇到过工作了三年,却一个问题都答不上来.. 这场史无前 ...

  2. Sql Server 中如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗

    提问: 如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗? 如果在.Net中用TransactionScope开启一个事务. 然后在该事务范围内启动两个 ...

  3. 13.mutiset树每一个结点都是一个链表的指针,可以存储相同的数据

    #include <iostream> //红黑树(自动保证平衡,自动生成平衡查找树) #include <set> #include <cstring> #inc ...

  4. week07 13.4 NewsPipeline之 三 News Deduper

    还是循环将Q2中的东西拿出来 然后查重(去mongodb里面把一天之内的新闻都拿出来,然后把拿到的新的新闻和mongodb里一天内的新闻组一个 tf-idf的对比)可看13.3 相似度检查 如果超过一 ...

  5. VC中出现“烫”和“屯”的原因(栈区的每一个字节都被0xCC填充了,也就是int 3h的机器码,动态分配的堆,VC的Debug用0xCD填充堆的空间,就出现了“屯”)

    相信经常用VC的朋友对屏幕输出的一大堆“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”不会陌生,但是也许会很奇怪,为什么会出现“烫”字呢?莫非改程序导致系统运行缓慢,发热过高???非也!下面让我解释 ...

  6. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  7. Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式

    Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell ...

  8. 【洛谷P1827】【USACO】 美国血统 American Heritage 由二叉树两个序列求第三个序列

    P1827 美国血统 American Heritage 题目描述 农夫约翰非常认真地对待他的奶牛们的血统.然而他不是一个真正优秀的记帐员.他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的&q ...

  9. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第三周 序列模型和注意力机制(Sequence models & Attention mechanism)-课程笔记

    第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 3.1 序列结构的各种序列(Various sequence to sequence ...

  10. VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt

    VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt Form1 内代码如下: ' 2022年8月22日 15时15分 ' 作者:name.vt Private Sub cmdCle ...

随机推荐

  1. What is Weight Lifting?

    Weight lifting is the process of lifting items of great mass in order to increase the muscle size an ...

  2. 使用loadrunner运行中问题(无代码生成解决方法)

    开始录制之后,不能成功录制,工具栏events一直是2,打开新网站不跳动,结束录制之后没有代码生成 进入软件,点击工具栏的录制,选择录制选项,将http高级如下设置 同时也要修改套接字,如下配置 当开 ...

  3. Linux开发——spi总线学习

    1 spi总线协议简介 1.1 基本概念 SPI(Serial pe)

  4. mxnet的broadcast_power() 注释错误

    用relationnet时,发现broadcast_power()的源码中的注释如下: 官方文档中的注释如下: 怎么算都算不出它这个结果... 自己用mxnet实验了一把,发现是注释错了,代码如下:

  5. fatal: unable to access ' ' OpenSSL SSL_read: Connection was reset, errno 10054

    描述: git clone ...时报错 fatal: unable to access 'https://github.com/github-eliviate/papers.git/': OpenS ...

  6. 最大流应用(Maximum Flow Application)

    1. 二分图匹配(Bipartite Matching) 1.1 匹配(Matching) Def. Given an undirected graph \(G = (V, E)\), subset ...

  7. 使用requests发送post请求登录

    post请求 语法结构 requests.post(url,data=None,json=None) 参数说明 url:需要爬取的网址 data:请求数据 json:json格式的数据 案例:登录小说 ...

  8. 淘宝商品信息定向爬虫.py(亲测有效)

    import requests import re def getHTMLText(url): try: kv = { 'cookie': '', #要换成自己网页的cookie 'user-agen ...

  9. CTF-NEFU校赛-题解

    Write by NEFUNSI: ghosin 0ERROR 签到 signin 下载 signin.txt 打开得到一串 base64,解码得到 flag{we1come_t0_NEFUCTF!} ...

  10. pysimplegui之tiee实例(附带github仓库地址)

    今天想写一个文件管理器,结果整了一下午,还是自己看的源代码少,分析别人代码少,最终还是看别人代码才找到错误原因.#!/usr/bin/env python import sys import os i ...