我需要编写一个构建二维数组的方法 - 金字塔使用从1到n的数字。
int[][] build(int n)
但我不知道什么算法可以帮助我。任何人都可以帮助我如何从n?
预测数组大小示例:build(6)返回
{{0, 0, 1, 0, 0},
{0, 2, 0, 3, 0},
{4, 0, 5, 0, 6}}
答案 0 :(得分:1)
一个好的第一步可能是根据给定的N来查看数组需要多少行。一旦你发现获取列数并相应地填充它们应该是一个相对简单的事情。
因此,让我们将图形上的行与N之间的关系绘制为X和Y.您可以在脑中绘制它或将其可视化:(1,1),(2,3),(3,6)等...
正如您所看到的,这不是线性的,它似乎是抛物线的。所以你可以做一个小代数或使用程序为你计算抛物线: http://www.wolframalpha.com/input/?i=parabola+(1,1),(2,3),(3,6)
为了确认方程是有效的,用X = 4和X = 5进行测试,是的,它是有效的。 Y = 0.5X^2 + 0.5X
希望这会给你一个开始,使你能够解决其余的任务。