蓝桥杯OJ716【限定第一步和最后一步爬台阶的经典例题】【动态规划】

题目:【蓝桥杯经典例题】

https://www.lanqiao.cn/problems/716/learning/?page=1&first_category_id=1&name=%E5%8F%B0%E9%98%B6https://www.lanqiao.cn/problems/716/learning/?page=1&first_category_id=1&name=%E5%8F%B0%E9%98%B6

可执行代码:

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;
}
相关推荐
zmzb010316 小时前
C++课后习题训练记录Day157
开发语言·c++
zephyr0517 小时前
动态规划-最长上升子序列问题
算法·动态规划
闪电悠米17 小时前
力扣hot100-56.合并区间-排序详解
数据结构·算法·leetcode·贪心算法·排序算法
卡提西亚18 小时前
leetcode-1438. 绝对差不超过限制的最长连续子数组
算法·leetcode·职场和发展
Java面试题总结19 小时前
LeetCode 93.复原IP地址
算法·leetcode·职场和发展·.net
从零开始的代码生活_19 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
泷寂20 小时前
最小生成树 (MST基础)
算法
大彼方..20 小时前
C++ STL Vector 深度剖析:从内存管理到性能优化
开发语言·c++
Daniel_12320 小时前
数组——总结篇
算法
炸薯条!20 小时前
从零开始学C++ (内存管理)
java·jvm·c++