题目:【蓝桥杯经典例题】
可执行代码:
cpp
//以斐波那契数列的方式来做这个题
#include<bits/stdc++.h>
using namespace std;
long long feet_left[40],feet_right[40];//【数组下标为0都浪费掉】,【feet_left[i]1到39分别表示第1到第39级台阶迈左脚的情况】,
//【feet_right[i]1到39分别表示第1到第39级台阶迈右脚的情况】
int main(){
feet_left[1]=1;
feet_left[2]=1;//第一级台阶一定迈左脚,第二步要想迈左脚,当且仅当第一步是迈了两个台阶,都是3一种情况
feet_right[1]=0;
feet_right[2]=1;//第一级台阶一定迈左脚,所以迈右脚的可能性为0,第二级台阶迈右脚当且仅当第一步左脚上了一级台阶,第二步右脚上了一级台阶
for(int i=3;i<=39;i++){
feet_left[i]=feet_right[i-1]+feet_right[i-2];
feet_right[i]=feet_left[i-1]+feet_left[i-2];
}
cout<<feet_right[39];//第39级台阶是右脚迈上来的
return 0;
}