[蓝桥杯] 第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
要求提交的是一个整数。
【题解】
数据比较水,可以用DP做,而且不用考虑优化空间的问题,用二维数组模拟一下就好了。
【代码 C++】
1 #include<cstdio> 2 int w[2][50]; 3 int main(){ 4 int i, j; 5 w[1][0] = 1; 6 for (i = 0; i < 39; ++i){ 7 if (w[0][i]) w[1][i + 2] += w[0][i], w[1][i + 1] += w[0][i]; 8 if (w[1][i]) w[0][i + 2] += w[1][i], w[0][i + 1] += w[1][i]; 9 } 10 printf("%d", w[1][39]); 11 return 0; 12 }