簡體   English   中英

形成符合定義值的項目組,無需重復

[英]Form groups of items, without repetition, that fit a defined value

我很難在谷歌表格上找到一個電子表格的解決方案,javascript 語言。 我看到一些東西,比如分組和丟棄。 但是我仍然無法在精神上組裝任何會產生任何結果的東西。

我需要在數據集中找到符合給定定義值的項目和項目組(總和)。

我有一個定義值的數據表,這是一個示例列表

物品 價值
1 100.00
2 53.50
3 45.00
4 67.00
5 32.50
6 35.60
7 34.70

我需要形成一組項目,以便它們的總和理想地為 100.00,但它可以接近這個值,甚至更高一點也是可能的,但理想值將達到 (<=)。

預期結果邏輯:

  • 組 1 = 項目 1 值 100.00

  • 第 2 組 = 項目 4 值 67.00 和項目 5 值 32.50(因為總和為 99.50,最接近 100)

  • 第 3 組 = 項目 2 值 53.50 和項目 3 值 45.00(因為總和為 98.50,最接近 100)

  • 第 4 組 = 項目 6 值 35.60 + 項目 7 值 34.70(因為總和為 70.30)

項目的順序或項目組的形成並不重要。 只有項目不能重復。

作為 output 您只需要每個組中的項目。 前任:

1

4 5

2 3

6 7 

但如果它有所有的結果,那就太好了(組、項目、總價值)

Group 1 item(s) 1 total value 100.50

Group 2 item(s) 4 5 total value 99.50

Group 3 item(s) 2 3 total value 98.50

Group 4 item(s) 6 7 total value 70.30

我是這么想的,但我還沒有找到怎么做

行動 規則 結果
檢查項目的最大值,因為 LIMITER 不能低於 最大值 顯示最大值。 例如:100
只要 LIMITER 等於或小於一個 ITEM 的最大值,就設置 LIMITER <=最大值 示例:限制器:100
檢查是否有任何 ITEM 的值等於 LIMITER 100 價值 == 限制 按順序(每個循環中+1)首先為值為100的項目設置組號
檢查 ITEM 的總和是否等於 LIMITER 100 項目總和 = 限制器的值,不重復已列出的項目 按順序(每個循環+1)設置該組項目的數量和值為100
檢查是否有任何 ITEM = -0.01 之前的搜索 不重復已列出的項目 按順序(每個循環+1)設置值低於限制器的項目組的數量
檢查任何項目總和是否 = -0.01 哪個先前的搜索 項目總和 = 獲取的值,不重復已列出的項目 按順序設置(每個循環中+1)值低於限制器的總和項目的組號
繼續搜索,直到沒有剩余值 不重復已列出的項目 將列表設置為最后一個可用項目

歡迎任何幫助

我注意到這個問題與背包問題非常相似。 我不是很擅長解釋它,但這里有一些資源比我能更好地解釋它。

https://learnersbucket.com/examples/algorithms/knapsack-problem-in-javascript/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM