【发布时间】:2012-10-03 00:31:36
【问题描述】:
最近我被问到以下面试问题: 您有两组长度相同的数字 N,例如 A = [3, 5, 9] 和 B = [7, 5, 1]。接下来,对于 0..N-1 范围内的每个位置 i,您可以选择数字 A[i] 或 B[i],因此最后您将获得另一个长度为 N 的数组 C,其中包含来自 A 和B.如果C中所有元素的总和小于或等于K,那么这样的数组是好的。请编写一个算法,通过给定的数组 A、B 和数字 K 计算出好的数组的总数。
我想出的唯一解决方案是动态编程方法,当我们有一个大小为 NxK 的矩阵时,M[i][j] 表示如果当前总和相等,我们可以对数字 X[i] 有多少组合到 j。但看起来他们希望我想出一个公式。你能帮我解决这个问题吗?至少我应该寻找什么方向?将不胜感激任何帮助。谢谢。
【问题讨论】:
-
如果 a[i] = b[i],会产生多个解决方案吗?我会说不,但不清楚
标签: algorithm