#include
#include
using
namespace
std;
/*有一座高度是10級台階的樓梯,從下往上走,每跨一步只能向上1級或者2級台階。
要求用程式來求出一共有多少種走法。
*///遞迴演算法
int getclimbingways(int n)
if(n == 1)
if(n == 2)
return getclimbingways(n - 1) + getclimbingways(n - 2);
}//備忘錄演算法: 時間和空間複雜度均為o(n)
map memo;
int getclimbingways2(int n)
if(n == 1)
if(n == 2)
if(memo.count(n))
return memo[n];
else
}//動態規劃求解:每一次只儲存前兩步的結果
//時間複雜度o(n),空間複雜度o(1)
int getclimbingways3(int n)
return temp;
}int main()
爬樓梯問題 動態規劃
題目 乙個人每次只能走一層樓梯或者兩層樓梯,問走到第80層樓梯一共有多少種方法。解題思想 設走第i層樓梯需要dp i 中方法,走第i 1層樓梯需要dp i 1 中方法。則走第 i 1層樓梯的方法種數為dp i 1 dp i 種。實動態規劃解題的主要思想就是找出遞推式,然後利用子問題的解來求最後的最優...
動態規劃(爬樓梯問題)
問題 有 n 階台階,每次可以走 1 或 2 步,請問走到第 n 階台階一共有多少種走法?解 設有 f n 種走法 第一步 1 2 第二步 f n 1 f n 2 狀態方程 f n f n 1 f n 2 n 2 f 0 0,f 1 1,f 2 2 函式 int function int n int...
動態規劃 爬樓梯
假設你正在爬樓梯,需要n步你才能到達頂部。但每次你只能爬一步或者兩步,你能有多少種不同的方法爬到樓頂部?比如n 3,1 1 1 1 2 2 1 3,共有3種不同的方法 返回 3 解題思路 沒接觸過動態規劃的時候,我用排列組合做的,在我這篇部落格中 可以看一下。實際上,這個題目就是乙個斐波那契數列,這...