Java 效率问题
我试图使我的算法更有效,但由于某些原因,它不能正常工作。有人能告诉我,如果我的逻辑是正确的。一般的问题是,如果你的高度是“x”,你可以跳过“u”距离,但如果你还没有清除高度,你会掉到“d”距离。我得计算一下跳跃的次数 初始代码工作正常Java 效率问题,java,algorithm,math,Java,Algorithm,Math,我试图使我的算法更有效,但由于某些原因,它不能正常工作。有人能告诉我,如果我的逻辑是正确的。一般的问题是,如果你的高度是“x”,你可以跳过“u”距离,但如果你还没有清除高度,你会掉到“d”距离。我得计算一下跳跃的次数 初始代码工作正常 while(x-u>0) { x=x-u+d; i++; } i++; 更高效的代码(由于某些原因,某些情况下会失败,但我不知道是哪种情况) intk=u-d; 如果(x-u好的,让我看看。最后一次跳跃来自x-u或更高的高度。剩下的你必须在
while(x-u>0) {
x=x-u+d;
i++;
}
i++;
更高效的代码(由于某些原因,某些情况下会失败,但我不知道是哪种情况)
intk=u-d;
如果(x-u好的,让我看看。最后一次跳跃来自x-u
或更高的高度。剩下的你必须在(u-d)
大小的步骤中完成,这些步骤的数量当然是(x-u)/(u-d)
在i
-第i步之后,你处于高度i*(u-d)+u
(并且摔倒)。因此,在大约(x-u)/(u-d)
步中,你处于高度x-u+u=x
。回想一下步数应该是一个整数,我们得到最终结果:
if (u >= x)
return 1;
if (u <= d)
throw "Impossible";
return ceil((x - u)/(u - d));
如果(u>=x)
返回1;
如果(u好的,让我看看。最后一次跳跃来自x-u
或更高的高度。剩下的你必须用(u-d)
-大小的步数,这些步数当然是(x-u)/(u-d)
在i
-第i步之后,你处于高度i*(u-d)+u
(并且摔倒)。因此,在大约(x-u)/(u-d)
步中,你处于高度x-u+u=x
。回想一下步数应该是一个整数,我们得到最终结果:
if (u >= x)
return 1;
if (u <= d)
throw "Impossible";
return ceil((x - u)/(u - d));
如果(u>=x)
返回1;
如果(你不知道,根据你发布的内容。不知道x、u、z、d、i或k是什么。通过调试器的一次漫游应该会告诉你。k是什么?和z?你能再次解释一下d吗?你为什么需要d吗?我不知道你为什么会有这个下降的方面,但无论如何,听起来你应该用代数方法写下这个问题,并解决它象征性地,然后将其作为一段代码来实现。由于某些原因导致某些情况失败,但我不知道哪些情况下失败了。
如果您不知道失败的时间,您是如何发现失败的?(可能有助于了解这些信息)问题来自于一个编码竞赛,他们没有给出所有的测试用例,但是循环通过了所有的测试用例,而非循环的测试用例不知道,根据你发布的内容。不知道x、u、z、d、i或k是什么。通过调试器的漫游应该告诉你。k和z是什么?你能再解释一下d吗?为什么你需要d?我不知道为什么你会有这个下降的方面,但无论如何,听起来你应该用代数的方式写下这个问题,然后用符号的方式解决它,然后把它作为一段代码来实现。由于某些原因失败了一些情况,我不知道是哪种情况,但是
如果你不知道它什么时候失败了,你是怎么发现有失败的?(可能有助于了解这些信息)问题来自一个编码竞赛,他们没有给出所有的测试用例,但是循环通过了所有测试用例,而非循环的测试用例没有通过