gpt4 book ai didi

java - 如何将水果堆放整齐

转载 作者:搜寻专家 更新时间:2023-11-01 02:43:35 27 4
gpt4 key购买 nike

我为这个案例选择了 Java,因为这种语言很简单,任何人都可以翻译。

用什么数学算法来确定底线上所需的水果数量,以便按照这样的模式堆叠 X 数量的水果? (忽略 2 的幂,我将其堆叠在一个正方形中)

 *  1
* 2 3 = 2
*
* 1 2
* 3 4 5 = 3
*
* 1
* 2 3
* 4 5 6 = 3
*
* 1 2 3
* 4 5 6 7 = 4
*
* 1 2
* 3 4 5
* 6 7 8 9 = 4
*
* 1
* 2 3
* 4 5 6
* 7 8 9 X = 4
*
* 1 2 3
* 3 4 5 6
* 7 8 9 X 1 = 5

最初我认为这很容易,但随着数字越来越高,我开始认为它更像是一个阶乘。

编辑:添加从@templatetypedef 下面提供的答案翻译而来的代码

private int _getBottomLineCount() {
double insideSquareRoot = (8 * numberOfApples) +1;
double squareRoot = Math.sqrt(insideSquareRoot);
double val = (squareRoot -1) /2;

return (int) Math.ceil(val); // Round it up to nearest whole number
}

最佳答案

高度为 n 的金字塔中的水果数量由第 n 个三角数给出,由方程给出

Tn = n(n + 1) / 2

例如,一个高度为 2 的金字塔拥有 2(2 + 1)/2 = 3 个水果。高度为 4 的金字塔可容纳 4(4 + 1)/2 = 10 个水果。

如果您有 k 个水果要放入堆栈中,您正在寻找满足 Tn ≥ k 的最小数字 n。您可以直接解决这个问题:

Tn = k

n(n + 1) / 2 = k

n2 + n = 2k

n2 + n - 2k = 0

使用二次公式给出

n = (-1 ±√(1 + 8k)) / 2

这里的负根可以忽略,所以你的数n应该是

n = (√(8k + 1) - 1) / 2

这个数字可能不是整数,在这种情况下你想向上取整。

让我们尝试一些例子。假设你有 9 个水果要堆叠。我们可以计算上面的公式得到

n = (√(72 + 1) - 1) / 2 = (√(73) - 1) / 2 = 3.772001873

四舍五入得到 k = 4,所以你需要一堆高度为 4 的堆栈。

假设您有 137 个水果要堆叠。同样的公式返回 n = 16.060495162,所以你需要一堆高度 17 来存储水果。

希望这对您有所帮助!

关于java - 如何将水果堆放整齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com