变态跳台阶

简介:

C++

复制代码
1 class Solution {
2 public:
3     int jumpFloorII(int n) {
4         return  1<<--n;
5     }
6 };
复制代码

推导:

关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:

f(1) = 1

f(2) = f(2-1) + f(2-2)         //f(2-2) 表示2阶一次跳2阶的次数。

f(3) = f(3-1) + f(3-2) + f(3-3) 

...

f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n) 

 

说明: 

1)这里的f(n) 代表的是n个台阶有一次1,2,...n阶的 跳法数。

2)n = 1时,只有1种跳法,f(1) = 1

3) n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2) 

4) n = 3时,会有三种跳得方式,1阶、2阶、3阶,

    那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2);第一次3阶,那么剩下f(3-3)

    因此结论是f(3) = f(3-1)+f(3-2)+f(3-3)

5) n = n时,会有n中跳的方式,1阶、2阶...n阶,得出结论:

    f(n) = f(n-1)+f(n-2)+...+f(n-(n-1)) + f(n-n) => f(0) + f(1) + f(2) + f(3) + ... + f(n-1)

    

6) 由以上已经是一种结论,但是为了简单,我们可以继续简化:

    f(n-1) = f(0) + f(1)+f(2)+f(3) + ... + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2)

    f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1) = f(n-1) + f(n-1)

    可以得出:

    f(n) = 2*f(n-1)

    

7) 得出最终结论,在n阶台阶,一次有1、2、...n阶的跳的方式时,总得跳法为:

              | 1       ,(n=0 ) 

f(n) =     | 1       ,(n=1 )

              | 2*f(n-1),(n>=2)
复制代码
1 class Solution {
2 public:
3     int jumpFloorII(int n) {
4         if (n <= 1) return 1;
5         return 2 * jumpFloorII(n-1);
6     }
7 };
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/5112931.html,如需转载请自行联系原作者

相关文章
|
调度 C# Windows
震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……(下)
震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……(下)
|
6月前
MessageBox 弹框 全局方法$msgbox, $alert, $confirm 和 $prompt常用代码片段
MessageBox 弹框 全局方法$msgbox, $alert, $confirm 和 $prompt常用代码片段
|
6月前
|
前端开发 JavaScript Java
千帆大模型平台多维度体验总结——平台使用以及接口调用小游戏开发
千帆大模型平台多维度体验总结——平台使用以及接口调用小游戏开发
264 0
|
6月前
|
安全 Linux 网络安全
服务器设置 SSH 通过密钥登录
服务器设置 SSH 通过密钥登录
|
存储 供应链 前端开发
开源SaaS进销存系统如何实现无限开商户?
管店云开源进销存是一款功能完善、易于扩展的SaaS进销存系统。它涵盖了商品管理、销售开单、库存管理、客户管理等多个模块,满足了中小型商户在企业进销存管理方面的需求。管店云开源进销存还具有良好的用户体验,用户通过网页登录和手机APP端即可随时随地管理销售单、进货、库存和客户关系。
145 0
|
网络协议 数据安全/隐私保护
PPPoE 的 基础配置及原理
PPPoE 的 基础配置及原理
|
数据可视化 数据处理 Python
推荐一款科研必备的Python数据可视化神器——PyQtGraph
推荐一款科研必备的Python数据可视化神器——PyQtGraph
推荐一款科研必备的Python数据可视化神器——PyQtGraph
|
算法 数据安全/隐私保护 C语言
基于C语言的AES加密算法实现
基于C语言的AES加密算法实现
808 0
基于C语言的AES加密算法实现
|
SQL 开发工具
vim与sql的格式化
最近由于要调试与优化ms server的sql语句,但是使用ms server带的事件探查器取出的sql语句没有格式化,要显示sql语句非常难看,本来想寻找一个合适的格式化工具,找了半天没有找到(找到的都是要money)。
1382 0