力扣题库之爬楼梯

力扣题库之爬楼梯

  • 题目 : 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
    注意:给定 n 是一个正整数。
思路 :
  • 对于这道题目 ,有n阶台阶,全1有一种方法,最多可以踩 n / 2 个 2阶台阶
  • 设 有 x 个2阶台阶 , 那么 1 阶台阶的个数为 n - x 。排列组合有 C(n , x)种排列方式
  • 计算公式 : 设 有 x 个2阶台阶 , 那么 1 阶台阶的个数为 n - x 。排列组合有 C(n , x)种排列方式
//编写一个计算排列组合的函数
			function sort( n , x){
				//计算除数的乘积
				var chushu = 1 
				for( var i = 1 ; i <= x ; i ++){
					chushu *= (n - i + 1)
				}
				//计算被除数的乘积
				var beichu = 1
				for( var i = x ; i > 0 ; i --){
					beichu *= i				
				}
				//那么一共的排列组合为
				var sum = chushu / beichu ;	
				
				return sum
				
			}
			// console.log(sort(6,2))
			var climbStairs = function(n) {
				//如果n = 1那么直接返回1
				if(n === 1){
					return 1
				}
				//最多能够踩2阶台阶的个数为
				var x = parseInt(n / 2)
				var count = 0;
				
				
				//对于 1 - x的2阶个数,循环求出所有排列组合的和
				for( var i = 1 ; i <= x ; i ++){
					//此时的n(总共的 1 ,2 个数 为 最开始的n - 2的个数)
					m = n -  i;
					count += sort( m , i)
					//将m重新赋值为最开始的n值
					m = n
				}
				
				//还有全1的一种情况
				return count + 1
			};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值