【发布时间】:2019-05-09 16:30:21
【问题描述】:
我需要编写一个基于动态编程方法的算法,老实说我完全卡住了。
好的,问题就是这样。我有两个长度相同(偶数)的列表。例如,假设:
a = [43, 10, 40, 12]
b = [63, 73, 5, 13]
我需要使用动态编程方法从这些列表中找到成对数字乘积的最大和。数字只能通过以下方式配对:
(a[n] * a[n+1]) V (b[n] * b[n+1]) V (a[n] * b[n])
显然,如果您选择其中一种组合,您将无法再使用这些数字。
我真正需要帮助的是找到递归函数。而且我真的找不到。如果有人能帮我解决这个问题,我将不胜感激。
最好的问候
【问题讨论】:
-
你能用你提供的 2 个列表举一个例子吗?外部读者仍然不清楚。
-
据我了解,要求是从两个列表中找到一组对,使得对中的数字要么在一个列表中相邻,要么在同一位置在这两个列表中,我们希望最大化这些对乘积的总和。我猜在这个例子中答案是 {(63,73), (43,10), (40,12), (5,13)}
-
假设列表元素是 A 和 B 两个系列的剧集的收视率。剧集每周成对播放。剧集必须以连续的方式显示。所以主播希望以最大化“收视率”的方式播放节目。因此,如果他们决定在第一周播放 A0、A1 它将是 43 * 10,如果是 A0、B0 它将是 63*43 等等。所以他们希望以这种组合播放剧集以最大化收视率乘积的最终总和
-
那么所提供数据的“正确”答案是什么?
(63,73)? -
是63*73 + 43*10 + 40*12 + 5*13
标签: python algorithm recursion dynamic-programming