首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“如何找到给定周长的矩形的最大面积”的Python变体

“如何找到给定周长的矩形的最大面积”的Python变体
EN

Stack Overflow用户
提问于 2013-06-14 23:07:22
回答 3查看 512关注 0票数 2

对于下面的数学模型,我有一个优化问题。它类似于求一个给定周长的矩形的最大面积,但在这个例子中,我们没有两个变量。

我有X个正整数,它们的和是Y。在给定Y的情况下,我怎样才能找到能给出最大乘法的整数集呢?

示例:

给定Y = 8,答案应该是X[1] = 2; x[2] = 3; x[3] = 3,因为这将给我最大的乘法。

有没有针对这类问题的python代码/逻辑?

EN

回答 3

Stack Overflow用户

发布于 2013-06-14 23:45:21

设n是项数,s是总数。用s // n填充大小为n的列表,并在最后一个s % n元素上加1。这给出了具有最大乘积的列表。

代码语言:javascript
复制
max_list = [s//n] * (n - s%n) + [s//n + 1] * (s%n)
票数 2
EN

Stack Overflow用户

发布于 2013-06-15 01:47:23

确实,“乘法的最大值将是所有值最接近相等的值时”,正如前面的答案中所述,并通过

max_list = [s//n] * (n - s%n) + [s//n + 1] * (s%n)

在另一个答案中。这可以通过类似于证明算术平均值到几何平均值不等式的技术来证明,例如在Proof by Pólya中。

当给定总和Y而不是项数X,并且希望计算X时,可以观察到当W = e ≃ 2.71828pow(W,Y/W)是最大的。最接近e的整数是3,因此为了最大化乘积,请主要包括3,以及一个或两个2。通常,当Y%3为1时包括两个2,当Y%3为2时包括一个2,当Y%3为0时没有,并用3弥补差值。示例(在形式中,Y:a b…对于和Y和项a,b,...)包括3: 3、4: 2 2、5: 3 2、6:3 3、7: 3 2 2、8: 3 3 2、9:3 33、10: 3 3 2 2等。

票数 1
EN

Stack Overflow用户

发布于 2013-06-14 23:14:38

乘法的最大值将是所有值都最接近相等的值。

代码语言:javascript
复制
X = [Y // 3 for i in range(3)]
difference = Y - X[0] * 3
if difference == 2:
    x[0] += 1
    X[1] += 1
elif difference == 1:
    X[0] += 1
print (X)

Output:
Y = 8
X = [3, 3, 2]
Y = 9
X = [3,3,3]
Y = 10
X = [4,3,3]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17111611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档