猴子吃桃問題

2021-07-25 22:36:42 字數 1697 閱讀 9544

有乙隻猴子第一天摘下若干個桃子,當即吃掉了一半,有多吃了乙個;第二天又將剩下的桃子吃掉一半,有多吃了乙個;按照這樣的吃飯每天都吃掉前一天剩下的一半又多乙個。到了第10天,就剩下乙個桃子。問題,這個桃子第一天摘了多少個桃子。

#include 

int main()

printf("%d\n", ans);

}return

0;}

演算法分析:

keyvalue

測試輸入

10測試輸出

1534

時間複雜度

o(n)

空間複雜度

o(1)

時間複雜度:

space(n) = heap(n) + stack(n)

heap(n):額外申請堆記憶體的空間大小

stack(n): 表示函式棧的最大深度

由於此處沒有申請額外堆記憶體空間,且函式棧的最大深度為1,所以時間複雜度為1。

#include 

int fruit_num(int i)

int main()

return

0;}

演算法分析:

keyvalue

測試輸入

10測試輸出

1534

時間複雜度

o(n)

空間複雜度

o(n)

時間複雜度:

space(n) = heap(n) + stack(n)

heap(n):額外申請堆記憶體的空間大小

stack(n): 表示函式棧的最大深度

由於此處沒有申請額外堆記憶體空間,且函式棧的最大深度為n,所以時間複雜度為n。

棧的深度測試:

#include 

int fruit_num(int i)

else

}int main()

return

0;}

結果:

函式 10進棧

函式 9進棧

函式 8進棧

函式 7進棧

函式 6進棧

函式 5進棧

函式 4進棧

函式 3進棧

函式 2進棧

函式 1進棧

函式1彈棧

函式2彈棧

函式3彈棧

函式4彈棧

函式5彈棧

函式6彈棧

函式7彈棧

函式8彈棧

函式9彈棧

函式10彈棧

1534

#include 

int fruit_num(int i)

int main()

return

0;}

時間複雜度:

space(n) = heap(n) + stack(n)

heap(n):額外申請堆記憶體的空間大小

stack(n): 表示函式棧的最大深度

由於此處沒有申請額外堆記憶體空間,且函式棧的最大深度為n,所以時間複雜度為n。

猴子吃桃問題

猴子吃桃問題 時間限制 3000 ms 記憶體限制 65535kb 難度 0 描述 有一堆桃子不知數目,猴子第一天吃掉一半,又多吃了乙個,第二天照此方法,吃掉剩下桃子的一半又多乙個,天天如此,到第 m天早上,猴子發現只剩乙隻桃子了,問這堆桃子原來有多少個?m 29 輸入 第一行有乙個整數 n,表示有...

猴子吃桃問題

猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個 第二天早上又將剩下的桃子吃掉一半,又多吃了乙個。以後每天早上都吃了前一天剩下的一半零乙個。到第10天早上想再吃 時,見只剩下乙個桃子了。求第一天共摘了多少。方法一 public class test w w 1 2 syst...

猴子吃桃問題

問題 有乙隻猴子,第一天摘了若干個桃子 當即吃了一半,但還覺得不過癮 就又多吃了乙個。第2天早上又將剩下的桃子吃掉一半,還是覺得不過癮,就又多吃了兩個。以後每天早上都吃了前一天剩下的一半加天數個 例如,第5天吃了前一天剩下的一半加5個 到第n天早上再想吃的時候,就只剩下乙個桃子了。public cl...