我想让我的算法更高效,但由于某种原因,它不能正常工作,有人会告诉我,如果我的逻辑是正确的。一般的问题是,如果你有一个'x'的高度,并且你可以跳过'u'距离,但是如果你还没有清除高度,你就会掉下'd'距离。我必须计算跳跃的次数。效率问题
初始代码正常
while(x-u>0) {
x=x-u+d;
i++;
}
i++;
更高效的代码(由于某种原因失败某些情况下,我不知道是哪个案件虽然)
让我尝试和澄清你的问题有一个高度为X的墙,你可以跳到U的距离,但是每次跳时你也会滑下D的距离D. 所以我们可以说如果你有一个高度为x = 4,u = 4,d = 1的墙。那么你只需要跳一次,因为第一次跳你就已经清除了墙,所以你根本不会滑倒。现在让我们说x = 6,u = 4,d = 1。然后你必须跳两次,因为你第一次跳到4,但是下降到1,所以你在3,然后下一次你跳墙。
不知道,基于在你发布的内容上。无法分辨x,u,z,d,i或k是什么。通过调试器的小程序会告诉你。 – duffymo
whats k?和z?你能再解释一下吗?为什么你需要d? – SD1990
不知道我明白为什么你有这个下降的方面,但无论如何,它听起来像你应该以代数方式写下这个问题,然后象征性地解决它,然后作为一段代码实现。 – Marcin