【发布时间】:2023-01-08 04:54:37
【问题描述】:
我目前正在学习高级算法和数据结构考试,但我似乎无法解决以下练习题之一:
1.14) “尼斯三角”
一个“漂亮”的三角形定义如下:
- 三角形由三个不同的数组成,即前三个素数(2、3、5)。
- 每个数字都以下列方式依赖于它下面的两个数字。
- 数字相同,结果数也相同。 (2, 2 => 2)
- 数字不同,结果数字为剩余数字。 (2, 3 => 5)
给定一个长度为 L 的整数 N,对应于三角形的底边,确定顶部的最后一个元素
例如: 给定 N = 25555(因此 L = 5),三角形如下所示:
2 3 5 2 5 5 3 5 5 5 2 5 5 5 5=> 2 是这个例子的结果
每个数字都是质数这一事实与问题有什么关系?
通过使用一种朴素的方法(简单地计算每一行),可以获得 O(L^2) 的时间复杂度。 然而,教授说,O(L) 是可能的,但我就是找不到任何模式!!!
【问题讨论】:
-
通过过多的测试,在我看来,好像在索引 i 和 L-i 交换数字不会改变结果,但我完全缺乏它背后的直觉,我不知道如何使用这个事实。
-
你是对的。请参阅我的答案中的第一个选项。 i 处的数字被添加到输出的次数与 L-i 处的数字相同
标签: algorithm data-structures dynamic-programming