【发布时间】:2012-03-22 15:38:35
【问题描述】:
我遇到了这个问题here。这是今年早些时候举行的编程比赛。
总结如下:
给定一个包含 N 个整数的数组,找出所有连续 M 个整数的 LCM。
例如
Array = [3,5,6,4,8] (hence N = 5)
M = 3
输出:
LCM(3,5,6) = 30
LCM(5,6,4) = 60
LCM(6,4,8) = 24
实际上有一个解决方案草图here,但我无法理解动态编程部分。
因此,如果有人可以通过一些示例详细说明相同的解决方案,那就太好了。
一个新的、易于理解的解决方案也将受到赞赏。
【问题讨论】:
-
该草图似乎包含三个部分:1)一种方法,2)以“另一种方法将分解每个 A[i]...”开头的部分,以及 3)最后一部分,“许多参赛者使用的另一种方法是……”。您需要哪些方面的帮助?
-
@Beta 我需要动态编程部分的帮助。
-
@Carl 我能想到最简单的解决方案,即在不使用 DP 或任何其他快捷方式的情况下找到所有连续 M 数字的 LCM。这是 O(MN) 时间。