在白天,一只蜗牛爬上了墙壁。经过一整天的劳动,它停下来休息了一段时间......但睡着了!第二天早上醒来,发现它在睡觉时滑下了。为我的作业优化的解决方案
如果每天都发生这种情况,蜗牛会爬上多少次以覆盖不同高度的n个墙壁?
我写了一个函数来计算蜗牛的野怪的数量,如下图所示:
void count(int move_forward, int move_backward, int number_walls, int[] height)
{
int count = number_walls, diff = move_forward - move_backward;
while (number_walls--)
for (move_backward = move_forward; move_backward < height[number_walls]; move_backward += diff)
count++;
}
它的正常工作。但我想知道是否有任何其他解决此问题的方法来进一步优化程序的速度。
(height-x)/(x-y)+1,不需要循环 – amit
@Jay,BTW - 在早期问题中使用有意义的变量名称的建议在内部循环的上下文中是有争议的。太多太长的名称会让你的代码像一堆神秘的单名和双名字一样无法读取。这完全取决于平衡。 – dmckee
只要我坚持我的鼻子,还有一点意见。这个练习的要点可能是向你展示一下,坐下来想一会儿,你可以从“O(高度)”(方法你尝试它)到'O(1)'(amit解决它的方式)。 – dmckee