- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
现在我有 7 个数字:1、2、3、4、5、6、7。我想把他们分成 3 组。喜欢 (1,2) (3,4) (5,6,7)但是,以下 4 个分配是相同的。
这个与上面4个作业不同。(1,3) (2,4) (5,6,7)
此外,每个组的元素数量必须尽可能接近。说 7=2+2+3,它不能像 7=1+3+3 或 7=1+2+4。我只以7个数3组为例,解法一定也适用于不同的数和组,比如9=2+2+2+3。
所以
最佳答案
它是一类分区的组合枚举。我的策略是将所有由两部分组成的分区循环到(大小为 q 的部分中的事物)和(大小为 q + 1 的部分中的事物),然后在这些部分中进行所有偶数分区。
import itertools
def partition_by_index(lst, indexes):
lsts = ([], [])
indicator = [False] * len(lst)
for i in indexes:
indicator[i] = True
for i, x in enumerate(lst):
lsts[indicator[i]].append(x)
return lsts
def enumerate_even_partitions(lst, k):
n = len(lst)
if n == 0:
yield ((),) * k
return
q, r = divmod(n, k)
assert r == 0
for indexes in itertools.combinations(range(1, n), n - q):
lst0, lst1 = partition_by_index(lst, indexes)
for subpartition in enumerate_even_partitions(lst1, k - 1):
yield (tuple(lst0),) + subpartition
def enumerate_maximally_even_partitions(lst, k):
n = len(lst)
q, r = divmod(n, k)
# k - r parts of size q and r parts of size q + 1
for indexes in itertools.combinations(range(n), r * (q + 1)):
lst0, lst1 = partition_by_index(lst, indexes)
for subpartition0 in enumerate_even_partitions(lst0, k - r):
for subpartition1 in enumerate_even_partitions(lst1, r):
yield subpartition0 + subpartition1
关于algorithm - 无标记的排列组合。就像将几个元素尽可能均匀地分配到几个组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29166371/
我需要在半径R的圆内生成一个均匀随机点。 我意识到,通过在区间 [0 ... 2π) 中选择均匀随机的角度,并在区间 (0 ... R) 中选择均匀随机的半径,我最终会得到更多的点朝向中心,因为对于两
我想在一个正方形内生成 N 个点(均匀地)。我怎样才能做到这一点? 最佳答案 非常酷的问题,比我想象的要困难得多,但这就是想法。有关于 n 边形的论文,但我只会做正方形。因此,圆的均匀分布是一个常见问
考虑以下示例: import itertools import numpy as np a = np.arange(0,5) b = np.arange(0,3) c = np.arange(0,7)
SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。 表仅包含 2 列 rid 和 count。 create table t1(rid int, count in
我有以下简单的 HTML。 A B C 和 CSS: ul { width: 100%; display: flex; flex-direction:
我是一名优秀的程序员,十分优秀!