python - 以平衡权重的 block 拆分列表

标签 python algorithm optimization language-agnostic combinatorics

我需要一种算法将值列表分成这样的 block ,每个 block 中的值总和(大约)等于(我想它是 Knapsack problem 的一些变体)

因此,例如 [1, 2, 1, 4, 10, 3, 8] => [[8, 2], [10], [1, 3, 1, 4]]

首选等长 block ,但这不是限制条件。

Python 是首选语言,但也欢迎使用其他语言

编辑: block 数已定义

最佳答案

贪心:
1. 将可用的项目降序排列。
2.创建N个空组
3. 开始将项目一次一个地添加到总和最小的组中。

我认为在大多数现实生活中这应该足够了。

关于python - 以平衡权重的 block 拆分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855394/

相关文章:

python - Numpy - 导入错误 : cannot import name _distributor_init

python - 使用带有 "illegal"变量名的 dict() 构造函数

python - 将 C++ 缓冲区复制到 Python 的最佳方法

java - 快速排序 3 种方式 - 为什么当元素大于主元时循环索引不递增?

c++ - 速度比较 : add zero or check non-zero first

matlab - 使用 MATLAB 的 GPU 功能计算 sum(a.*exp(b.*c),1) 的有效方法

python - 如何强制 scipy.optimize 中的 lesssq 函数优于每个数据点

python - 如何从 groupby 和 size 获取归一化值

java - 连续检测对角线获胜 - tic-tac-toe, gomoku

algorithm - 笛卡尔幂 - 通过递归