使用1D数组递归

时间:2016-07-27 03:21:27

标签: java recursion

我一直盯着这个问题好几个小时。出于某种原因,我理解洪水填充和二维数组的递归,但似乎甚至无法开始解决这个问题:

你有三名助手在为你工作。一个名叫杰夫,另一个名叫杰夫,第三名叫杰夫。它们都以每分钟一页的相同速度打字。你今天带着一堆你需要尽快打字的文件来到你的办公室。您必须以尽可能早地完成所有论文的方式在您的助理中分发论文。 “杰夫这样做,”你喊道。 “杰夫这样做,”你说。 “杰夫,完成这份工作,”你告诫道。所以杰夫做到了。但你需要帮助他。所以你有这个APT。

您的任务是,给定每个纸张的页数为int [],返回助理输入所有这些纸张所需的最小分钟数。假设他们不能将纸张分成几部分,也就是说,每张纸都是由一个人打字的。例如,给定{1,2,3,4,5,6,7},函数应返回10,因为7 + 3 = 10,6 + 2 + 1 = 9,而5 + 4 = 9(还有这些数字的其他组合将产生相同的结果)。

1 个答案:

答案 0 :(得分:0)

您的任务基本上是解决分区问题。

https://en.wikipedia.org/wiki/Partition_problem

由于此任务是NP完全的,因此无法在多项式时间内(最佳地)求解。解决方案只能近似。

最简单的评价是贪心算法:

首先按降序对表进行排序。之后,您将对其进行迭代,将任务分配给迄今为止分配的工作量最少的Jeffs。

不需要递归。