LeetCode70.爬楼梯 纯数学解法(组合)

本文介绍了LeetCode70题——爬楼梯问题的纯数学解法,通过分析迈脚次数和选择2阶楼梯的位置,得出不同爬楼梯方法。通过计算迈脚次数的组合,并确定2阶楼梯的放置位置,如对于5阶楼梯,有3种不同的爬法:11111, 1112, 122。最后提供了代码实现来求解此类问题。" 114750378,10538344,Java递归遍历树形结构找子父节点,"['Java开发', '数据遍历', '递归算法', '数据库操作']
摘要由CSDN通过智能技术生成

题目描述

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。

逻辑思路

最开始简单概括一下逻辑:爬楼梯总次数=不同的迈脚的次数(可以通过爬多少次2阶算出)*在哪个位置爬2阶

迈多少次脚(爬多少次2阶)

n个台阶,只看选1阶或选2阶的数量,可以有n/2+1种选法。
也可以说,因为不选2就是选1,直接看可以选多少不同2的次数决定了有多少选法,即总共需要迈多少次脚才能爬完楼梯。

比如说爬5阶台阶,你可以选只爬一次2阶,两次2阶或者一次都不爬,总共有3种迈脚的方法,即[5/2+1]
迈脚情况分为
(1)1 1 1 1 1
(2)1 1 1 2
(3)1 2 2
但迈脚情况不代表最后的组合结果

在哪爬2阶

迈几次脚还需要结合在哪里迈2阶,才能得到最后的爬楼梯方法。在不同位置爬2阶,也会产生不一样的上楼方法。
也就是说现在得到了一共要迈多少次脚,然后要选出在第几次迈脚迈2阶。也就是,在迈脚的次数n里,选出m次迈2阶的位置。当然你选择在哪几次迈脚迈1阶也是一样的,毕竟 C n m = C n n − m \qquad\mathrm{C}_n^m=\qquad\mathrm{C}_n^{n-m} Cn

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值