楼梯问题

hl给我的几道某公司的算法题:

1、
有个 100 级的楼梯,你可以每次跨 1级或2级,问跨到100级总共有多少种跨法。

 这个题目很容易写出递推式f(n) = f(n-1) + f(n-2),这个其实就是标准的斐波那契数列

使用自底向上的递推的动态规划算法来避免重复计算:

int fib(int n){

   int f0 = 1,f1 = 1;

   int i;

   for(i = 2; i < n; i++)

   	f2 = f0 + f1;

        f0 = f1;

	f1 = f2;

   }

   return f1;

}

 扩展一下也就是每次跨N1,N2,...Nk个台阶的跨法:

这个递推式:

f(n) = f(n-N1) + f(n-N2) + ... + f(n-Nk)

算法也很好写了,用一下从底往上推和记事本的动态规划方法代码分别如下:(待续)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值