遞推方程an = an-1 + an-2
a0 = 0
a1 = 1
**:
int fibonacci(int n)else
}
問題:時間負複雜度太高有太多的重複計算,會導致時間複雜度為指數級
例如,求an時需要計算an-1 和an-2, 求an-1時需要計算an-2 和an-3。。。
解決,將重複計算用陣列dp儲存起來用的時候直接拿出來。
#include #include using namespace std;
int dp[1000]; //用來儲存重複的計算
int main()
cout << dp[n] << endl;
return 0;
}
名名的媽媽從外地出差回來,帶了一盒好吃又精美的巧克力給名名(盒內共有 n 塊巧克力,20 > n >0)。 媽媽告訴名名每天可以吃一塊或者兩塊巧克力。 假設名名每天都吃巧克力,問名名共有多少種不同的吃完巧克力的方案。 例如: 如果n=1,則名名第1天就吃掉它,共有1種方案; 如果n=2,則名名可以第1天吃1塊,第2天吃1塊,也可以第1天吃2塊,共有2種方案; 如果n=3,則名名第1天可以吃1塊,剩2塊,也可以第1天吃2塊剩1塊,所以名名共有2+1=3種方案; 如果n=4,則名名可以第1天吃1塊,剩3塊,也可以第1天吃2塊,剩2塊,共有3+2=5種方案。 現在給定n,請你寫程式求出名名吃巧克力的方案數目。
輸入只有1行,即整數n。
可能有多組測試資料,對於每組資料,示例1輸出只有1行,即名名吃巧克力的方案數。
4
5
#include #include using namespace std;
int main()
cout << step[n] << endl;
}return 0;
}
動態規劃一 斐波那契數列
題目 寫乙個函式,輸入n,求斐波那契 fibonacci 數列的第n項。斐波那契數列的定義如下 public long fib int n 以fib 5 為例 深色部分的fib 3 以及fib 2 會被重複計算,當n增大時,遞迴樹高度增加,會有更多的重複計算 因此這種遞迴方法的效率非常低 考慮到遞迴...
動態規劃 斐波那契數列
問 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 斐波那契數列簡單介紹 我的解法 注 從fibonacci n 1 fibonacci n 2 明顯看出使用的是遞迴,此題用遞迴兩三行 即可搞定。但是,若出題者準備著乙個超大的n,那麼很有...
python斐波那契數列動態規劃
斐波那契類似於1 1 2 3 5 8這樣的數列,當前項等於前兩項之和。根據這個規律就可以用遞迴來做,可是當數字很大的時候,遞迴耗時很長,因此可以採用動態規劃來做。動態規劃 deffeibonacci1 n array 0 1 while len array n 1 array 2 return ar...