我正在尝试编写一个函数,使用它可以以最少的步骤获取任何自然数。允许我对从 1 开始的自然数进行加法或减法。 条件是:
一个数字只能使用一次
您只能执行加法和减法。
不允许转义任何数字
找到具有最大值的整数值以获得该数字。
例如:如果我想要的数字是4,那么它的获取方式为-1+2+3,这里答案是3。以类似的方式,如果我想要 6,则 1+2+3 这里答案是 3。对于10= 1+2+3+4,则为4。
到目前为止我所拥有的:
到目前为止我所拥有的:
public void step() {
int n = (int)Math.sqrt(position * 2);
k = (position - (((n + 1) * n) / 2));
l = ((((n + 1) * (n + 2)) / 2) - position);
System.out.println(k + " " + l);
System.out.println(n);
p = (l > k ? k : l);
r = (l > k ? n : n + 1);
System.out.println(p + " " + r);
if (k == 0) {
result = n;
} else {
result = r + (2 * p);
} System.out.println("__________" + result + "__________");
}
最佳答案
好吧,就这样吧。考虑以下二叉树
。现在您可以找到每条路径的总和,并使用 sum=您的数字(假设为 4)
获取每条路径。现在您可以从中获得最大值(value)。尝试想出这个的实现方案。如果你尝试一些事情,我可以进一步帮助你。
0
/ \
-1 1
/ \ / \
-2 2 -2 2
关于java - 通过连续自然数的加法或减法获得一个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18308139/