【问题标题】:How to determine the number of filled drums, and the room left in each drum如何确定装满桶的数量,以及每个桶中剩余的空间
【发布时间】:2017-06-22 16:45:00
【问题描述】:

不完全是作业问题,但也可能是:

你有一长串正整数值存储在 A 列中。这些是单元 U 中的数据包。 一个鼓最多可容纳 500 U,但您不能分解数据包。 A 列中任何给定的值列表需要多少个鼓?

这不一定是最有效的答案,按行顺序处理绝对没问题。

我认为你应该可以用一个公式来解决这个问题,但我得到的最接近的是

=天花板(SUM(A1:A1000)/500;1)

当然,这会破坏数据包。

此外,这个问题要求我能够找到每个使用的鼓的剩余空间,但这个问题的重点应该仍然是所需的数量。

【问题讨论】:

  • 这不属于math.stackexchange.com吗?
  • @marcellothearcane 我需要知道具体如何在 openoffice calc 中进行操作,这里有一个标签。我在这里假设它是主题。
  • 这看起来像knapsack problem。此类问题通常通过代码来解决。您愿意接受使用宏或仅使用电子表格公式的解决方案吗?
  • @Jim K 我对宏持开放态度,但如果答案稍后会提供公式,那将是首选。

标签: openoffice-calc


【解决方案1】:

这不能用一个简单的公式来完成。每个桶和包都需要计数。然而,与我的评论相反,对于这个特殊问题,电子表格效果很好,并且不需要宏。

首先,将 B2 设置为 500 以用于其他公式。如果 A 列尚未填充,请使用公式 =RANDBETWEEN(1,B$2) 添加一些值。

C 列是确定每个鼓的装满程度的主要公式。将 C2 设置为=A2。 C3 是=IF(C2+A3>B$2,A3,C2+A3)。向下填充 C3 以填充剩余的行。

对于 D 列,使用=IF(C2+A3>B$2,B$2-C2,"")。但是 D 列的最后一行较短:=B$2-C21 并将 21 更改为最后一行。

最后在 E 列中我们找到了答案,就是=COUNT(D2:D21)

Packets  Drum Size  How Full  Room left in each drum used  Number of filled drums
-------  ---------  --------  ---------------------------  ----------------------
206      500        206       294                          13                     
309                 309                                                           
68                  377                                                           
84                  461       39                                                  
305                 305       195                                                 
387                 387       113                                                 
118                 118                                                           
8                   126       374                                                 
479                 479       21                                                  
492                 492       8                                                   
120                 120                                                           
291                 411       89                                                  
262                 262                                                           
108                 370       130                                                 
440                 440       60                                                  
88                  88                                                            
100                 188                                                           
102                 290       210                                                 
478                 478       22                                                  
87                  87        413                                                    

对于 OpenOffice Calc,请在公式中使用分号 ; 而不是逗号 ,

【讨论】:

  • 哇,我希望我能投票两次。看起来这方面做了很多工作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多