在白天,一隻蝸牛爬上了牆壁。經過一整天的勞動,它停下來休息了一段時間......但睡着了!第二天早上醒來,發現它在睡覺時滑下了。爲我的作業優化的解決方案
如果每天都發生這種情況,蝸牛會爬上多少次以覆蓋不同高度的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