Hello 算法 1.1.0 Rust版最大容量问题 Question 输入一个数组 ℎ? ,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及它们之 间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 第 15 章 贪心 hello‑algo.com 362 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 ???[?, ?] ,则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(状态总数)为 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 第 15 章 贪心 hello‑algo.com 363 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版最大容量问题 Question 输入一个数组 ℎ? ,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及它们之 间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 第 15 章 贪心 www.hello‑algo.com 361 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 ???[?, ?] ,则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(状态总数)为 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 第 15 章 贪心 www.hello‑algo.com 362 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版15.3 最大容量问题 � 输入一个数组 ℎ? ,其中的每个元素代表一个垂直隔板的高度。数组中的任意两个隔板,以及 它们之间的空间可以组成一个容器。 容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的 数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 第 15 章 贪心 hello‑algo.com 360 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 ???[?, ?] ,则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(状态总数)为 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 第 15 章 贪心 hello‑algo.com 361 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图0 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0为了理解何时会需要使用结构体,让我们编写一个计算长方形面积的程序。我们会从单独的变 量开始,接着重构程序直到使用结构体替代它们为止。 使用 Cargo 新建一个叫做 rectangles 的二进制程序,它获取以像素为单位的长方形的宽度和 高度,并计算出长方形的面积。示例 5-8 显示了位于项目的 src/main.rs 中的小程序,它刚刚 好实现此功能: 文件名:src/main.rs fn main() { let area(width: u32, height: u32) -> u32 { 函数 area 本应该计算一个长方形的面积,不过函数却有两个参数。这两个参数是相关联的, 不过程序本身却没有表现出这一点。将长度和宽度组合在一起将更易懂也更易处理。第三章的 “元组类型” 部分已经讨论过了一种可行的方法:元组。 使用元组重构 示例 5-9 展示了使用元组的另一个程序版本。 文件名:src/main.rs 103/562Rust measured; 0 filtered out; finished in 0.00s 两个测试通过了!现在让我们看看如果引入一个 bug 的话测试结果会发生什么。将 can_hold 方法中比较宽度时本应使用大于号的地方改成小于号: // --snip-- impl Rectangle { fn can_hold(&self, other: &Rectangle) -> bool {0 码力 | 562 页 | 3.23 MB | 24 天前3
Rust 语言学习笔记linux, android, freebsd, dragonfly, bitrig, openbsd, netbsd。 target_pointer_width = "..." - 目标平台的指针宽度,一般就是 32 或 64。 target_vendor = "..." - 生产商,例如 apple, pc 或大多数 Linux 系统的 unknown。 test - 当启0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言简体中文版为了理解何时会需要使用结构体,让我们编写一个计算长方形面积的程序。我们会从单独的变 量开始,接着重构程序直到使用结构体替代它们为止。 使用 Cargo 新建一个叫做 rectangles 的二进制程序,它获取以像素为单位的长方形的宽度和 高度,并计算出长方形的面积。示例 5-8 显示了位于项目的 src/main.rs 中的小程序,它刚刚 好实现此功能: 文件名:src/main.rs fn main() { let -> u32 { # width * height # } 函数 area 本应该计算一个长方形的面积,不过函数却有两个参数。这两个参数是相关联的, 不过程序本身却没有表现出这一点。将长度和宽度组合在一起将更易懂也更易处理。第三章的 “元组类型” 部分已经讨论过了一种可行的方法:元组。 使用元组重构 示例 5-9 展示了使用元组的另一个程序版本。 文件名:src/main.rs fn ]; list.sort_by_key(|r| r.width); println!("{:#?}", list); } 示例 13-7:使用 sort_by_key 对长方形按宽度排序 代码输出: $ cargo run Compiling rectangles v0.1.0 (file:///projects/rectangles) Finished dev0 码力 | 600 页 | 12.99 MB | 1 年前3
Comprehensive Rust(简体中文) 202412驱动程序 事实上,PL011 具有很多额外的寄存器,但通过添加偏移量构建指针的方式来访问这些寄存器,既容易出 错又难以读取。此外,其中有些寄存器是位字段,非常便于以结构化方式访问。 偏移 寄存器名称 宽度 0x00 DR 12 0x04 RSR 4 0x18 FR 9 0x20 ILPR 8 0x24 IBRD 16 0x28 FBRD 6 0x2c LCR_H 8 0x30 CR 16 0x340 码力 | 359 页 | 1.33 MB | 10 月前3
共 7 条
- 1













