练习三 Problem J

来源:互联网 发布:windows 投射 airplay 编辑:程序博客网 时间:2024/05/13 10:36

题目:

有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
 

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

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

Sample Input
223
 

Sample Output
12

题意如上所述,没什么好说的。。。。。。。。

解题思路:每一步的情况都与上一个和上上个台阶的情况有关,dp方程:a[i]=a[i-1]+a[i-2];

感想:大大的水题。。。。似乎还做过,多写几步就能找出规律。

代码:
<span style="font-size:14px;">#include<iostream>using namespace std;int main(){    int i,n,m,a[41];     cin>>n;     while(n--)     {        cin>>m;            a[1]=0;          a[2]=1;           a[3]=2;         for(i=4;i<=m;i++)               a[i]=a[i-1]+a[i-2];             cout<<a[m]<<endl;       }    return 0;}</span>


0 0