【发布时间】:2016-07-24 12:27:32
【问题描述】:
假设我们有一个 python 列表
list = [[1,2,3],[4,5,6],[7,8,9]]
我将总和定义如下,
sum:是每个子列表中单个条目(不同索引)的总和。
这听起来很复杂,所以我举个例子,
对于上面的列表,1 + 5 + 9 是总和之一,因为 1 来自第一个子列表,5 来自第二个子列表,9 来自第三个子列表,它们在相应的子列表中都有不同的位置。
所以我不能拥有1 + 4 + 7,因为 1,4 和 7 是其子列表中的第一个条目。
我不能拥有1 + 5 + 8,因为 5 和 8 都是它们列表中的第二个条目,依此类推
例如, 我想找到每个子列表的单个条目总数的最高总和!
我怎样才能遍历所有这些可能的总和,然后从所有这些总和中得到最高的。
对于上面的列表,我们有 3^3=27 个不同的和。
有没有一种使用 python 的有效方法?
【问题讨论】:
-
这似乎是您不想只是迭代并检查所有排列的那种事情。
-
但如果我没有遍历所有内容,我将如何获得最高金额? @亚当史密斯
-
这是寻路。 A * 也许?天真的实现虽然使用
itertools.product -
这是寻路吗?这对我来说似乎不同 - 例如,如果您在示例中的节点“5”处,您不一定能根据您来自哪里去到 7 8 或 9。您需要一个指数级的大图来表示所有可能的“路径”,不是吗?
-
为什么是 27 个总和,而不是 6 个?