蓝桥杯第四届省赛第39级台阶
题目描述:
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字。
思路:既然要求必须走偶数步,则在走的时候把左脚右脚分别走一步作为走一次。
#include<stdio.h> int left[4] = { 1,1,2,2 }; int right[4] = { 1,2,1,2 };//每次两步两步的走,左右脚搭配的方式 int sum = 0; void dfs(int n) { //还剩多少节楼梯 if (n == 0) {//恰好走完 sum++; return; } if (n <= 1) { //剩一节或者这种走法已经走不通 return; } int i; for (i = 0; i < 4; i++) { dfs(n - left[i] - right[i]); } } int main() { dfs(39); printf("%d", sum); return 0; }
答案:51167078