鱼C论坛

 找回密码
 立即注册
查看: 5355|回复: 8

猴子爬山问题:猴子每次跳一步或者三步,要上一个n阶的小山可选择的方案种数。

[复制链接]
发表于 2019-11-18 13:50:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 狸花鼠 于 2019-11-18 19:09 编辑

猴子爬山问题:猴子每次跳一步或者三步,要上一个n阶的小山可选择的方案种数。
#include<stdio.h>
int main()
{
        int n,i,f1,f2,f3,f4;
        scanf("%d",&n);
        f1=1;f2=1;f3=2;
        for(i=4;i<=n;i++)
        {
                f4=f3+f1;
                f1=f2;
                f2=f3;
                f3=f4;
        }
        printf("%d\n",f4);
        return 0;
}

红色这段是答案,但是我看不懂为什么是这种算法。有大佬能解释下吗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-18 18:12:59 | 显示全部楼层
先把你的题意说清楚再来问吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2019-11-18 19:08:04 | 显示全部楼层
ba21 发表于 2019-11-18 18:12
先把你的题意说清楚再来问吧

就是为什么是这种算法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 19:13:01 | 显示全部楼层
狸花鼠 发表于 2019-11-18 19:08
就是为什么是这种算法

猴子每次跳一步或者三步,要上一个n阶的小山可选择的方案种数?
你这是要说什么?????????????????????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-20 10:21:43 | 显示全部楼层
ba21 发表于 2019-11-18 19:13
猴子每次跳一步或者三步,要上一个n阶的小山可选择的方案种数?
你这是要说什么??????????? ...

比如说n是4,猴子上山的方式就有1111,13,31这三种方案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-20 18:46:26 | 显示全部楼层
本帖最后由 ba21 于 2019-11-20 18:51 编辑
狸花鼠 发表于 2019-11-20 10:21
比如说n是4,猴子上山的方式就有1111,13,31这三种方案


对于你这个问题,无耐只好上网找了下相关资料。
人家的题目是这么说的:一个猴子在一座不超过30级的小山上爬山跳跃,猴子上山一步可跳1级或跳3级,试求上山有多少种不同的爬法;当然这个30可以是n。

你的提供代码使用了算法。
设爬n级台阶的不同爬法有f(n)种?
则:
f(1) = 1; 即  1=1
f(2) = 1; 即  2=1+1
f(3) = 2; 即  3=1+1+1; 3
f(4) = 3; 即  4=1+1+1+1;  3+1;  1+3 ( f(4)=f(3) + f(1) )
也就是f(n)=f(n-1)+f(n-3);

代码中 初始化   f1=1; f2=1; f3=2; 也就是说小于等于3阶的你都初始化好了,所以计算是从4开始 i = 4
然后根据上面的运算法则
                f4=f3+f1; // 算得f4 f(n)=f(n-1)+f(n-3);
                f1=f2; // 依次重新初始化f1 第1次循环这个f1也就是f(4)
                f2=f3; // 依次重新初始化f2 第1次循环这个f2也就是f(5)
                f3=f4; // 依次重新初始化f3 第1次循环这个f2也就是f(6)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-20 22:33:08 | 显示全部楼层
ba21 发表于 2019-11-20 18:46
对于你这个问题,无耐只好上网找了下相关资料。
人家的题目是这么说的:一个猴子在一座不超过30级的小 ...

emmmm先还是要谢谢你,但是那个f(n)=f(n-1)+f(n-3)这个式子的推导我还没懂。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-20 22:37:15 | 显示全部楼层
狸花鼠 发表于 2019-11-20 22:33
emmmm先还是要谢谢你,但是那个f(n)=f(n-1)+f(n-3)这个式子的推导我还没懂。。。。。。

n=5
f(n)=f(n-1)+f(n-3) //把n带进去你不会?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-21 12:24:34 | 显示全部楼层
ba21 发表于 2019-11-20 22:37
n=5
f(n)=f(n-1)+f(n-3) //把n带进去你不会?

好吧,谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-21 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表