核心算法 遞推、回溯。 問題描述 爬樓梯問題,每次可以走1步或者2步,爬上n層樓梯的總方法。 (是不是你見過的最短的題目描述了,除了a+b) 解題思路 能進(jìn)則進(jìn),不進(jìn)則退。(回溯法八字真言) 解題步驟
遞歸圖解 代碼解析 #include<cstdio> int n,ans = 0; //n樓梯總數(shù) ans當(dāng)前方案數(shù) void dfs(int i) { //當(dāng)前在第i層樓梯上 if(i == n){ //走到第n層 ans++;//方案數(shù)加1 return;//及時返回 } if(i >n) { //超過n層 return;//及時返回 } dfs(i+1);//走一層 dfs(i+2);//走兩層 return; } int main() { scanf('%d',&n); dfs(0); //從地面開始走 printf('%d\n',ans); return 0; } 例題推薦 【洛谷 P1255】https://www./problemnew/lists?name=1255 思考
|
|