剑指offer-变态跳台阶

        问题:

         一个台阶总共有n级,如果一次可以跳1级,也可以跳2级......它也可以跳上n级。此时该青蛙跳上一个n级的台阶总共有多少种跳法?

      解析:高中数学题都可以解决(感慨:大学里学的很多都是在高中学的,有时候感觉如果把大学的四年换成高中的再三年许多人在知识水平上都能够达到研究生的水平,貌似大部分研究生也是咋混日子,很多学生学了等于没学,或者把所有的科目都在当做文化课在学习,只知道有这个东西,但不知道这个东西是什么怎么做的。但其实谁都知道许多逻辑都很简单,有时候自学完全能够搞定,只是许多人都浮躁了,静不下心来,1234*4321谁都会就是不想动脑而已。。)

回到正题:高中学过排列组合都应该能回忆起来,插板法,n个球中选1个空位,选2个,选3个......选n个,就是C(0,n)+C(1,n)+C(2,n)+……C(n,n)=2^n   (n换成n-1就可以了)

这个公式的推导:

其实你给的这个式子是某个二项展开式的特殊情况.你自己可以这样来算:
(x+y)^n=C(0,n)x^0*y^n+C(1,n)x^1*y^(n-1)+C(2,n)x^2*y^(n-2)+…
…+C(n,n)x^n*y^0……① (注:x^n表示x的n次方,其他类推)
把上式与C(0,n)+C(1,n)+C(2,n)+……C(n,n)……②对比可知:
当x取1,y取1时,①式右边与②式相等.
而当x=y=1时,①式右边为2^n
所以C(0,n)+C(1,n)+C(2,n)+……C(n,n)=2^n

   代码:

public class Solution {
    public int JumpFloorII(int target) {
        return (int) Math.pow(2, target-1);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值