计蒜客-题库-爬楼梯
题目
假设你现在正在爬楼梯,楼梯有 n级。每次你只能爬 1级或者 2级,那么你有多少种方法爬到楼梯的顶部?
输入格式
第一行输入一个整数 n(1≤n≤50),代表楼梯的级数。
输出格式
输出爬到楼梯顶部的方法总数。
样例输入
5
样例输出
8
思路
每次只能爬1或者2级,也就是说可以从前n-1、n-2两级任意一级到达n级,那么到达第n级的总数就是前两级的和,有点斐波拉契的意思
代码
#include<iostream> using namespace std; long long num[51]; long long solve(int n){ if (n == 1){ return 1; } if (n == 2){ return 2; } if (num[n] != 0){ return num[n]; } return num[n]=solve(n - 1) + solve(n - 2); } int main(){ int n; cin >> n; cout << solve(n) << endl; return 0; }
使用数组num存储每一级的总数,避免重复计算导致的超时
害怕失败的人,已经是一个loser!