problem
設有一頭小母牛,從出生第四年起每年生一頭小母牛,按此規律,第n年時有幾頭母牛?
input
本題有多組資料。每組資料只有乙個整數n,獨佔一行。(1≤n≤50)
output
對每組資料,輸出乙個整數(獨佔一行)表示第n年時母牛的數量
sample input14
520sample output12
3872
------------------------------------
最容易寫出來的。
解決方法很簡單:母牛數等於自己加上它生的小牛數,再加上它的小牛們自己生的小牛,如此遞迴。
/*此解答未被accept
原因:運算時間超時(1200ms,而時間限制在1000ms)
*/#include
int f(int n)
}return res;
}int main()
return 0;
}上面解答的弱點是,重複計算(比如f(1)被。每乙個小牛掉用了,被每乙個小牛的每乙個孩子呼叫了,如此重複下去),導致時間開銷很大。
----------------------------
改進的:
為了避免重複運算,我們將用乙個陣列儲存已經被計算過的值,由於函式f的任何計算的結果都不會是
-1,那麼我們設定陣列的初始值為-1,但檢查到其值不為-1時,那麼它已經被計算過了,我們就沒有必要再計算了。
/*此解答已通過tongji編譯,並接收
user result memory time language date
zhouyinhui accepted 56 k 2ms c++ 2006-05-06 16:32:02
*/#include
#include
int* arr;//用於儲存運算結果,避免遞迴呼叫中的重複運算
int f(int n)
res += *(arr+i); }}
return res;
}int main()
return 0;
}
jquery click重複呼叫的問題
原呼叫時動態繫結了click事件,但是呼叫的時候發現總是重複呼叫幾次。function openaddidx st,et 問題現象 每次呼叫openaddidx,開啟對話方塊,顯示正常,當單擊按鈕 btn addidxcon 重複呼叫n次addidxandredrowline,並且n不固定,有時候1...
使用物件封裝ajax重複呼叫的方法
在專案中經常用到ajax呼叫遠端資料,每一次呼叫,都得寫乙個ajax方法,這就造成了重複 過多,可讀性也不夠強,所以,我一般都是封裝起來,需要的時候呼叫。var imgupload success function data 呼叫 imgupload.method url get function ...
遞迴等小問題的總結
遞迴時注意一下兩個主要的問題 1 逐漸縮小問題的規模,並且可以使用相同的方法來解決子問題 2 遞迴一定要找到最後的結束條件,否則將陷入死迴圈。遞迴主要是 遞迴過程和最終結束條件 關於遞迴過程則要找到 大問題與子問題的共同點,3生2,2生1,1為終結 在遇到不能簡單呼叫本身的遞迴函式時,這時要使用一定...