上台阶,来自赛码网,初级动态规划算法
来源:互联网 发布:snmp trap 端口号 编辑:程序博客网 时间:2024/05/17 22:06
上台阶
题目描述
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
样例输入
2
2
3
输出
对于每个测试实例,请输出不同走法的数量。
样例输出
1
2
时间限制
C/C++语言:2000MS其它语言:4000MS
内存限制
题目描述
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
样例输入
2
2
3
输出
对于每个测试实例,请输出不同走法的数量。
样例输出
1
2
时间限制
C/C++语言:2000MS其它语言:4000MS
内存限制
C/C++语言:65537KB其它语言:589825KB
初级的动态规划问题,思路就是假设两种情况。
情况一:最后一步上了一个台阶,到达第i级,则走法为到达第i-1级台阶的走法。
情况二:最后一步上了两个台阶,到达第i级,则走法为到达第i-2级台阶的走法。
所以到达第i级台阶的走法为到达第i-1和i-2级台阶的走法的和。
以下算法中,我们令到达第1级的走法o1为1(此处为了计算准确,不得设置为0,原因你会明白的),令到达第2级的走法o2为1(这是肯定的,因为初始位置在第一级,到达第二级只有一种走法),令到达第3级的走法为2(自己算也是2,用第i-1级台阶走法即o1加第i-2级台阶的走法o2的和也是2)。此时开始循环,循环一次o3就等于第4级台阶的走法,循环n次o3就等于n+3级台阶的走法。当然,特要注意,循环只在输入的实例值大于等于3时有用,不满足则直接输出结果就行。
#include<iostream>using namespace std;int main() { int n; //共有n个实例; cin >> n; while(n--) { int get; //用户输入的实例具体值; int o1 = 1, o2 = 1, o3 = 2; //o1,o2,o3分别代表前往第1级,第2级,第3级台阶走法个数,注意o1设置为1,是因为后面计算需要,其实第1级到1级的走法判定为1也没有问题,只是题设说明了为0; cin >> get; switch(get) { //判断实例值的情况,只有n>=3时才进入循环进程,否则直接输出结果; case 1: cout << 0 << endl; break; case 2: cout << 1 << endl; break; default: for(int i = 3; i < get; i++) { //一共循环了get-3次,第0次循环o3为前往3级台阶的走法个数,故循环完成后为前往get-3+3=get级台阶的走法个数; int o4 = o3; o3 += o2; o1 = o2; o2 = o4; //循环体内主要就是让o3=o1+o2,o1=o2,o2=o3原来的值; } cout << o3 << endl; } }}
阅读全文
0 0
- 上台阶,来自赛码网,初级动态规划算法
- 上台阶-动态规划
- 【动态规划】硬币面值组合(上台阶)
- 上台阶 简单动态规划 或者 用循环
- 翻转数组,来自赛码网,初级算法
- 约德尔测试,来自赛码网,初级算法
- 动态规划初级题解
- 动态规划初级
- 递归分治与动态规划--上台阶的问题
- 01串 动态规划初级
- 上台阶问题的算法
- 算法题--上台阶
- 算法--动态规划算法
- 动态规划算法——C++实现经典案例——初级
- 最少硬币(动态规划法,初级)
- 动态规划算法剖析
- 动态规划算法
- 初识动态规划算法
- hashMap非线程安全问题和concurrenthashmap线程安全的比较
- gson转json格式
- centos 安装 docker docker-compose
- 入门机器学习,必须掌握这些数据技能
- CSS基础(二)--盒模型与浮动练习
- 上台阶,来自赛码网,初级动态规划算法
- 欢迎使用CSDN-markdown编辑器
- Cloud郵便番号API
- linux命令之rpm
- php栈和队列
- hdu 6005 Pandaland(dij+暴力)
- 爬虫学习笔记--Selenium PhantomJS
- json介绍
- Flume安装及简单部署