计蒜客--爬楼梯

  •  31.9%
  •  1000ms
  •  65536K
 

假设你现在正在爬楼梯,楼梯有 nn 级。每次你只能爬 11 级或者 22 级,那么你有多少种方法爬到楼梯的顶部?

输入格式

第一行输入一个整数 n(1\leq n \leq 50)n(1n50),代表楼梯的级数。

输出格式

输出爬到楼梯顶部的方法总数。

样例输入

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;
}

简单的一道爬楼梯问题,之前对递归用的较多,对递推问题掌握的很不好。

posted on 2018-02-14 16:59  迪迪菜源  阅读(164)  评论(0)    收藏  举报

导航