2013蓝桥杯 【初赛试题】 第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
输出格式:
输出一个整数
程序分析:
这个程序不需要纠结在左脚和右脚的问题上,从中抽象出限制条件:一共走的步数是偶数;
我们可以通过递归来实现,对每次递归的结果进行判断,如果走过的台阶数为39则,结束递归,判断走的步数是否为偶数,为偶数则为上法计数器加一,否则为无效上法;
#include<stdio.h>
int count=0;
void dfs(int step,int bs){
if(step>39) return;
if(step==39){
if(bs%2==0) count++;
return;
}
dfs(step+1,bs+1);
dfs(step+2,bs+1);
}
int main(){
dfs(0,0);
printf("%d",count);
return 0;
}