Hello 算法 1.0.0b4 Java版容器的容量等于高度和宽度的乘积(即面积),其中高度由较短的隔板决定,宽度是两个隔板 的数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。 15. 贪心 hello‑algo.com 324 Figure 15‑7. 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短 板决定,宽度是两隔板的索引之差。设容量为 ???[?, ?] , 则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(即状态总数)为 ?2 ? = ?(?−1) 2 个。最直接地,我们可以穷举所有 状态,从而求得最大容量,时间复杂度为 ?(?2) 。 贪心策略确定 这道题还有更高效率的解法。如下图所示,现选取一个状态 我们发现,如果此时将长板 ? 向短板 ? 靠近,则容量一定变小。这是因为在移动长板 ? 后: ‧ 宽度 ? − ? 肯定变小。 ‧ 高度由短板决定,因此高度只可能不变(? 仍为短板)或变小(移动后的 ? 成为短板)。 Figure 15‑9. 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。 15. 贪心0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 Java版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 Java版容器的容量等于高度和宽度的乘积(即面积),其中高度由较短的隔板决定,宽度是两个隔板 的数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。 第 15 章 贪心 hello‑algo.com 357 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的索引之差。设容量为 定,宽度是两隔板的索引之差。设容量为 ???[?, ?] , 则可得计算公式: ???[?, ?] = min(ℎ?[?], ℎ?[?]) × (? − ?) 设数组长度为 ? ,两个隔板的组合数量(即状态总数)为 ?2 ? = ?(?−1) 2 个。最直接地,我们可以穷举所有 状态,从而求得最大容量,时间复杂度为 ?(?2) 。 1. 贪心策略确定 这道题还有更高效率的解法。如图 15‑8 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 Java版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的 数组索引之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版容器的容量等于高度和宽度的乘积(面积),其中高度由较短的隔板决定,宽度是两个隔板的数组索引 之差。 请在数组中选择两个隔板,使得组成的容器的容量最大,返回最大容量。示例如图 15‑7 所示。 图 15‑7 最大容量问题的示例数据 容器由任意两个隔板围成,因此本题的状态为两个隔板的索引,记为 [?, ?] 。 根据题意,容量等于高度乘以宽度,其中高度由短板决定,宽度是两隔板的数组索引之差。设容量为 所示,若此时将长板 ? 向短板 ? 靠近,则容量一定变小。 这是因为在移动长板 ? 后,宽度 ? − ? 肯定变小;而高度由短板决定,因此高度只可能不变(? 仍为短板)或 变小(移动后的 ? 成为短板)。 图 15‑9 向内移动长板后的状态 反向思考,我们只有向内收缩短板 ? ,才有可能使容量变大。因为虽然宽度一定变小,但高度可能会变大(移 动后的短板 ? 可能会变长)。例如在图 15‑10 中,移动短板后面积变大。0 码力 | 379 页 | 18.48 MB | 10 月前3
Java 应用与开发 - Java GUI 编程hgap, int vgap) 构造一个 BorderLayout 布局管理器,根据参数的组件/区域 间距。 O BorderLayout 型布局容器尺寸缩放原则 ▶ 北、南两个区域只能在水平方向缩放(宽度可调整)。 ▶ 东、西两个区域只能在垂直方向缩放(高度可调整)。 ▶ 中部可在两个方向上缩放。 大纲 GUI 组件及布局 GUI 事件处理 Applet Swing Swing 典型组件(课后自学)0 码力 | 73 页 | 876.31 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东int vgap) 构造一个 BorderLayout 布局管理器,根据参数的组件/区域间距。 . O BorderLayout 型布局容器尺寸缩放原则 • 北、南两个区域只能在水平方向缩放(宽度可调整)。 • 东、西两个区域只能在垂直方向缩放(高度可调整)。 • 中部可在两个方向上缩放。 GridLayout 网格布局的效果如下: • 将容器区域划分成规则的矩形网格,每个单元格区域大小相等,组件被添加到每0 码力 | 330 页 | 6.54 MB | 1 年前3
共 7 条
- 1













