【发布时间】:2014-04-18 08:37:47
【问题描述】:
我想知道解决以下问题的最佳方法是什么。 我是用 PHP 编写的,但它更像是一个一般性的编程问题,我猜它涉及搜索算法和组合。
给定一个包含多个数组/数字集的数组
$a[0] = array(1,2,3,4,5);
$a[1] = array(1,3,5,7,9);
$a[2] = array(2,4,6,8,10);
我想从每个数组中抽取一个数字,使抽取的数字之和尽可能小。 此外,数字必须从唯一的数组索引中提取,因此在此示例中您无法绘制 1、1、2。 上述数组中可能的最小数列是 3、1、4,总和为 8。
现在假设一个包含每个 m 数字的 n 数组/集合的输入数组,找到最佳数字序列的最合乎逻辑和最有效的方法是什么?
【问题讨论】:
-
看起来像你的作业!!!
-
这不是功课,我在创建应用程序时遇到了问题。我的解决方案包括
nfor 相互嵌套的循环以及一个用于跟踪最小总和的变量。它确实有效,但结果却是非常难看的代码,所以我只是想知道这里的正确方法是什么。我的猜测是最好递归解决,但我认为向其他程序员征求意见也无妨。 -
使用 min() 函数。然后从下一个数组中删除低于当前结果的任何内容。对下一个数组重复。不是真正的递归问题,因为您的数组不是递归的。
-
ToBe,我认为这行不通。如果我从第一个数组(在示例中)开始并使用 min() 函数,它将返回 1,而对于下一个数组,它将返回 3 和 6。这些值的总和将是 10,这不是最小的在这种情况下。
标签: php arrays optimization sum minimum