动态规划9:变态跳台问题
来源:互联网 发布:php简历项目经验怎么写 编辑:程序博客网 时间:2024/06/03 23:12
题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
分析可知:如果要上n阶台阶,拥有的可能方法数目是:
f(n)=f(n-1)+f(n-2)+f(n-3)+……f(1)+f(0);
于是从前往后计算出各个项的值就可以,在简单台阶问题中需要保留2个计算结果供后面的计算使用,这里需要保留每一项的计算结果,可以使用一个数组来保存dp[i],但是进一步分析发现可知:
f(n)=f(n-1)+f(n-2)+f(n-3)+……f(1)+f(0);
f(n-1)=f(n-2)+f(n-3)+……f(1)+f(0);
即f(n)=2*f(n-1);
于是只要保留1项结果就可以了,再分析初始值,
f(0)=1;
f(1)=1;
f(2)=2;……
于是f(n)=2^(n-1);
常识:一个整数除以2可以使用向右位移1位来实现,即2>>1=1;一个整数乘以2可以使用向左位移1位来实现,4<<1=8,于是本题中f(n)=2<<(n-2),注意左移动-1并不等价于右移1,于是对n=0,n=1特殊考虑。
注意:答案不要溢出,虽然不用处理但是在面试时要考虑溢出的问题并说明。
阅读全文
0 0
- 动态规划9:变态跳台问题
- 跳台阶问题 + 变态跳台阶问题 解法(动态规划递归 + 非递归)
- 动态规划10:变态跳台阶
- 动态规划:青蛙跳台阶、变态跳台阶
- 动态规划9:跳台阶问题
- 变态跳台阶问题
- 变态跳台阶问题
- 变态跳台阶问题
- 动态规划解决跳台阶问题
- 动态规划解决跳台阶问题
- 【9】变态跳台阶
- 跳台阶问题+变态跳台阶问题(动态递归+非递归)
- 跳台阶问题(变态跳台阶)
- 跳台阶问题(变态跳台阶)
- 跳台阶与变态跳台阶问题
- 青蛙跳台阶,变态跳台阶问题
- 跳台阶问题(变态跳台阶)
- 跳台阶问题(变态跳台阶)
- 批量数据导入Redis(Mass Insertion)
- 活字格企业 Web 应用生成器新手上路指南
- 早起工作
- 递归的两种思路
- Writing a Linux Kernel Module — Part 2: A Character Device
- 动态规划9:变态跳台问题
- java创建对象的方式
- Android之Adapter用法总结
- 答同行:提高科研能力很有必要
- 布局入门(一)
- 数据库概论---数据定义
- 四.控制执行流程——Java编程思想第4版学习笔记
- 第七届福建省大学生程序设计竞赛 Problem J- X(floyd)
- UE4源码clone