[英]React Hooks change single value of object with multiple keys without repetition
[英]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.