计蒜客--爬楼梯
- 31.9%
假设你现在正在爬楼梯,楼梯有 nn 级。每次你只能爬 11 级或者 22 级,那么你有多少种方法爬到楼梯的顶部?
输入格式
第一行输入一个整数 n(1\leq n \leq 50)n(1≤n≤50),代表楼梯的级数。
输出格式
输出爬到楼梯顶部的方法总数。
样例输入
5
样例输出
8
在写这道题的时候,我首先用的是递归,自然而然的超时了,超了一倍,这是一道动态规划题,之后采用的递推,就可以顺利提交:
递归代码:
#include <iostream>
#include<stdio.h>
int f(int n)
{
if(n == 1) return 1;
if(n == 2) return 2;
else
return f(n-1)+f(n-2);
}
int main() {
int n;
scanf("%d",&n);
if(n >= 1 && n <= 50)
printf("%d",f(n));
return 0;
}
递推代码:
#include <iostream>
#include<stdio.h>
int main() {
int a[55], n;
scanf("%d",&n);
a[0] = 0;
a[1] = 1;
a[2] = 2;
for(int i = 3;i <= n;i++)
a[i] = a[i-1]+a[i-2];
printf("%d",a[n]);
return 0;
}
简单的一道爬楼梯问题,之前对递归用的较多,对递推问题掌握的很不好。
浙公网安备 33010602011771号