algorithm - float 组分区

标签 algorithm

在写代码的时候,发现了以下问题,简单说一下:

Partition an array of floats X in array A and B such that the difference between the sum of the values in A and the sum of values of B is minimized

这是我正在进行的调查的一部分,但我找不到有效执行此操作的方法。

编辑:

对于那些认为这是来自体育、SPOJ 或家庭作业等数学竞赛的人,事实并非如此。当我尝试将已因式分解的数字 p 划分到因子 ab 集合中时,我只是对此感到好奇,使得 b=一个+1。如果我们从双方获取日志,我们可以证明这个问题相当于最小化总和的差异,但这就是我陷入困境的地方。

最佳答案

只是第一个简单的想法。使用动态规划方法。
我假设这个问题可以转化为背包问题。您需要从 X 中选择项目(将有数组 A)以最大化总和,但不要超过 (sumX - sumA) 值(将有数组 B 中的项目总和)。对于通过动态规划方法解决背包问题的算法,请参阅 wiki例如
顺便说一句,这个解决方案可能是错误的......但即使它能工作,我也非常确定存在更高效、优雅和简短的解决方案。

关于algorithm - float 组分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375274/

相关文章:

c# - 如果覆盖 0-9 则减少整数

c - C语言算法——谁是获胜队

java - deleteNode 有问题

algorithm - 引用传递的空间复杂度是多少

php - 计算字符中的可能性。使用连续重复标准的组合

algorithm - 在clojure中使用广度优先搜索的最短路径

algorithm - 在具有最小空间的网络上传递二叉树

algorithm - 如何制作GPS交通应用程序?

algorithm - 从 n 个数字的总和中找到最接近的 n

algorithm - 检查紧密连接的组件时 DFS 的运行时间