HDU - 2041 - 超级楼梯(dp)

题意:

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

思路:

如何到第n阶台阶,只能从n-1和n-2台阶上去,那么只需要计算到n-1阶台阶到n-2阶台阶即可

代码:

#include<iostream>
using namespace std;

const int maxn = 50;
int a[maxn];

void init() {
    a[1] = 1;
    a[2] = 1;
    a[3] = 2;
    for(int i = 4; i <= maxn-1; i++) {
        a[i] = a[i-1] + a[i-2];
    }
}

int main() {
    init();
    int t, n;
    scanf("%d", &t);
    while(t--) {
        scanf("%d", &n);
        printf("%d\n", a[n]);
    }       
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/somliy/p/9718422.html