如何动态找到最大组大小
How to find maximum group size dynamically
如果我想对 'n' 值的列表进行分区,我想找到最大组大小 g_new
。我们可以有任意数量的组。
我有:
n
值和可能的最大组大小 g_max
。
例如
n = 110
和 g_max = 25
.
我们不能组成以下人数的小组:[28,28,27,27]
,因为任何小组都不能超过 25 人!
这里,解决方案是,g_new
可以是22。因为它会形成5组,每组22。
我的问题是:
如何动态找到这个 g_new
(此处为 22)值,给定:n
和 g_max
请注意,我想在不违反 g_max
!
的情况下组建尽可能多的小组
抱歉,如果这个问题太简单了,我想不通。
假设您的意思是 n=110 并且希望组大小最多相差 1,您可以先计算向上取整的所需组数,然后计算向上取整的组大小:
>>> n, g_max = 110, 25
>>> -(n // (-n // g_max))
22
>>> n, g_max = 110, 36
>>> -(n // (-n // g_max))
28
如果我想对 'n' 值的列表进行分区,我想找到最大组大小 g_new
。我们可以有任意数量的组。
我有:
n
值和可能的最大组大小 g_max
。
例如
n = 110
和 g_max = 25
.
我们不能组成以下人数的小组:[28,28,27,27]
,因为任何小组都不能超过 25 人!
这里,解决方案是,g_new
可以是22。因为它会形成5组,每组22。
我的问题是:
如何动态找到这个 g_new
(此处为 22)值,给定:n
和 g_max
请注意,我想在不违反 g_max
!
抱歉,如果这个问题太简单了,我想不通。
假设您的意思是 n=110 并且希望组大小最多相差 1,您可以先计算向上取整的所需组数,然后计算向上取整的组大小:
>>> n, g_max = 110, 25
>>> -(n // (-n // g_max))
22
>>> n, g_max = 110, 36
>>> -(n // (-n // g_max))
28