Algorithm 计算不同长度电缆所需箱数的算法

Algorithm 计算不同长度电缆所需箱数的算法,algorithm,Algorithm,考虑到有人可以购买10K、5K、2K、1K英尺的电缆盒 假设它们有100个不同长度的电缆接头 我想确定他们需要购买的最佳组合箱 最大限度地减少浪费电缆的数量,以形成其下降 做这件事最好的方法是什么?我不擅长算法: 我试图完成的简单示例: 您有以下电缆长度: 1,1,2,3,4,5,6,7,5,4,3,2 您有以下框大小: 5,10,20 考虑到电缆长度,为了尽量减少浪费,您需要购买: 2 x 20盒 1 x 5盒 20=7,3,6,4 20=5,5,2,3,4,1 5=1,2 =========

考虑到有人可以购买10K、5K、2K、1K英尺的电缆盒

假设它们有100个不同长度的电缆接头

我想确定他们需要购买的最佳组合箱 最大限度地减少浪费电缆的数量,以形成其下降

做这件事最好的方法是什么?我不擅长算法:

我试图完成的简单示例:

您有以下电缆长度:

1,1,2,3,4,5,6,7,5,4,3,2

您有以下框大小:

5,10,20

考虑到电缆长度,为了尽量减少浪费,您需要购买:

2 x 20盒

1 x 5盒

20=7,3,6,4

20=5,5,2,3,4,1

5=1,2

=======================================

只是为了将来需要这样东西的人。下面是原始问题的完整代码。这是一个弗兰肯斯坦从切割,粘贴和粘合在一起不同的解决方案,我发现,虽然它对我的盒子工作
Set L = sum of lengths
While L > 0
  Get largest box B where size S <= L OR smallest box
  set numB = Floor division L / B OR 1
  store numB of B
  Subtract numB * B from L
您需要一些调整,以适应可能存在浪费的情况(即需要4英尺的电缆,但最小的盒子是5英尺)

如果我要用javascript编写它:

函数GetBoxesLength,Box{ //降序排序 box=box.sortb1,b2=>b2-b1; //以后再拿所需的最小盒子 const minB=box[box.length-1]; //创建一个对象来存储我的结果; const-boxResult=box.reduceacc,b=>Object.assignacc,{[b]:0},{}; //总长度 设L=length.reducesum,L=>sum+=L,0; 当L>0时{ //获取小于或等于L的第一个长方体或最小长方体
const B=box.findb=>B你能举个例子吗?我对一些重要的术语有点迷茫,比如水滴,不同的长度和产生水滴?如果我理解正确的话,因为你有一个1k英尺的盒子,浪费可能不会发生。每个问题盒子的大小都是随机的吗?它们都是5 10 20吗?是的。它们可以是不同的大小。这与目标总和等于或大于、硬币兑换和相关问题有何不同?你应该能够自己进行直接的攻击,即暴力解决方案。@prune,bryan60有99%的方法可以解决问题。看看他做了什么。我所需要的是每个框中的项目列表。请取消保留关于这个问题。太棒了!!!!我正试着把我的头绕在代码上。我如何修改它,以便我能得到每个盒子里都有哪些项目的列表?这有关系吗?我的假设是,一个有一定长度的电缆的盒子可以被分割成什么样的东西,这样他们就不必猜测它们的长度了可以从每个盒子制作。长度是否需要“适合”盒子,或者我是否可以根据需要细分和拼接?例如,如果我的长度是7,7,11,那么我需要25根电缆。但只有7和11“适合”在20个盒子里,没有一个可以放在5个盒子里,所以答案是120和15,0个垃圾,或者120和110,这样所有东西都可以放在一起,但是5英尺垃圾…不允许拼接会改变算法很多,使它显着更复杂…长度需要放在盒子里。你超越了,我感谢你或者这个。