核心算法 递推、回溯。 问题描述 爬楼梯问题,每次可以走1步或者2步,爬上n层楼梯的总方法。 (是不是你见过的最短的题目描述了,除了a+b) 解题思路 能进则进,不进则退。(回溯法八字真言) 解题步骤
递归图解 代码解析 #include<cstdio> int n,ans = 0; //n楼梯总数 ans当前方案数 void dfs(int i) { //当前在第i层楼梯上 if(i == n){ //走到第n层 ans++;//方案数加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 思考
|
|