【发布时间】:2019-02-25 16:36:21
【问题描述】:
我正在尝试用原生 JavaScript 编写一个简单的举重程序。用户输入一定量的重量,它会返回特定的重量板放在杠铃的每一侧。
然后我将这个数字带入一个函数,从它减去 45 来计算杠铃重量,然后将该数字除以 2,即放置在杠铃每一侧的重量。
const num = document.getElementById("weightAmount").value;
function getWeightAmount (num) {
const newNum = num - 45;
const halfNum = newNum / 2;
return getWeights(halfNum);
}
每个重量板都有一个数组:
let plates = [44, 33, 22, 11, 5.5, 2.75];
我无法正确循环遍历数组以获取我想要的内容。如果我需要每边 60.5 磅,它应该返回 44、11、5.5。所以我需要弄清楚plate 数组中的哪些数字适合我的第一个函数返回的数字。
我有一个名为 weights 的空数组,我想将 plates 数组中的数字推送到该工作中,然后返回权重。
我的问题是如何循环遍历plates 数组以确定需要哪些权重?
【问题讨论】:
-
找到只除一次目标重量的重量,把它加到杠铃上,然后从目标重量中减去。重复直到目标体重为零。
-
您使用
plates.forEach(function(plate){}}循环遍历数组以获取for (let plate of plates) {} -
可能相关:Knapsack problem
-
嗯,正如@FK82 提到的,它是背包,但稍作修改。其实就是一个Change-making问题的修改版[en.wikipedia.org/wiki/Change-making_problem],它本身就是一个背包问题的修改版。
-
@Taylorg:您可以在伪多项式时间内使用动态规划按照下面给出的答案编写自己的解决方案,也可以直接使用下面给出的解决方案
标签: javascript arrays loops for-loop