小明看完电影《第39级台阶》,离开电影院的时候,他数了数视觉的台阶数,恰好是39级。
站在台阶前,他突然又想起一个问题:如果我每一步只能迈上1个或2个台阶,先迈左脚,然后左右交替,最后一步迈右脚,也就是说一共要迈偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请利用计算机的优势,帮助小明寻找答案。
1、回溯法
#include <stdio.h>
int count=0;
int steps=0;
int number=0; //走的步数
void backtrack(int t)
{
if(t==39)
{
if (number%2==0)
count++;
return;
}
else
{
number++; t++;//走一步
backtrack(t);
number--; t--;
if(t<=37){
number++; t+=2;//走两步
backtrack(t);
number--; t-=2;
}
}
}
int main()
{
backtrack(0);
printf("the number is %d.\n",count);
return 0;
}