有砝码 1g,2g,3g...100g,组成 100g 的重量有几种方式?
这道题应该可以用动态规划做,但一下子没想出来(太渣了)
写了一个回溯的算法,但效率太差了:
function counterweightWays(currentNum, allNum, leftWeight, tmpResult, result) {
if (currentNum > allNum) {
return }
if (leftWeight == 0) {
result.push(Array.from(tmpResult))
return
}
const maxNum = Math.floor(leftWeight / currentNum)
for (let n = maxNum; n >= 0; n--) {
tmpResult.push(n)
counterweightWays(currentNum + 1, allNum, leftWeight - n * currentNum, tmpResult, result)
tmpResult.pop()
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.