算法导论-递推公式-HDOJ2041

来源:互联网 发布:淘宝水货手机 编辑:程序博客网 时间:2024/04/28 21:32
Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
 

Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
 

Output
对于每个测试实例,请输出不同走法的数量
 

Sample Input
223
 

Sample Output
12
 
这道题目一下把我难住了,从头到尾想实在是很难解决,换种思路就很简单了。
代码如下:
#include<iostream>#include<string.h>#include<stdio.h>using namespace std;/*当你到达第n阶的时候有两种到达方式。 在n-1处上 1个楼梯。在n-2处上2个楼梯。。所以上N阶楼梯的情况总数=上n-1的总数+上n-2的总数这样递推公式就出来了。。f(n)=f(n-1)+f(n-2)这种算法很常见,以后一定要注意!*/int main(){    int i,n,T,s[42];    s[1]=1;    s[2]=2;    scanf("%d", &n);    while(n--)    {        scanf("%d",&T);        if(T==1||T==2||T==3)        {            printf("%d\n",T-1);            continue;        }        for(i=3;i<=T;i++)        {            s[i]=s[i-1]+s[i-2];        }        printf("%d\n",s[T-1]);    }    return 0;}


0 0
原创粉丝点击