51Nod 上台阶

这篇博客讨论了如何帮助小瓜计算登上n级台阶的不同方法,其中每次只能走1级或2级。问题转化为求解斐波那契数列,通过递推公式F(n) = F(n-1) + F(n-2)来高效计算方案数,对于较大的n值,如F(50),递推方法显著提高了计算速度。
摘要由CSDN通过智能技术生成

现在小瓜想走上一个一共有n级的台阶,由于小瓜的腿比较短,他一次只能向上走1级或者2级台阶。小瓜想知道他有多少种方法走上这n级台阶,你能帮帮他吗?

输入格式

一行一个整数n(n<=100000),表示一共有n级台阶。

输出格式

一行一个整数,表示小瓜上台阶的方案数*对100003取余*的结果。

输入样例

3

输出样例

3

只考虑最后一步走 11 阶还是 22 阶,这是两种完全不同的方案。所有 n−1n−1 的方案都可以通过再走 11 阶转为 nn 的方案,所有 n−2n−2 的方案都可以通过再走 22 阶转为 nn 的方案。所以存在递推式:

                                        F(n)=F(n−1)+F(n−2)

这也是最终方案数是斐波那契数列的原因。

// 递推版
f[1] = f[2] = 1;
for(int i = 3; i <= n; i++){
    f[i] = f[i-1] + f[i-2];
}
// 递归函数
int F(int x){
    if(x == 1 || x == 2) return 1;
    return F(x-1) + F(x-2);
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值