前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小山猪,公众号喊你来做题

小山猪,公众号喊你来做题

作者头像
一头小山猪
发布2020-06-15 17:43:36
2820
发布2020-06-15 17:43:36
举报
文章被收录于专栏:微光点亮星辰

今天是迷你朱同学开学的日子,首先在这里祝他学业有成,早日成长成为巨朱。好了,现在我们开始进入正“题”吧,对,你没看错,今天的硬货就是一道

数学题。作为信息与计算科学(数学为主)的本科毕业生,不知道小山猪同学在看完题目之后有没有数学方面的解法呢?很期待你的解答哦,但是本文只能给出编程解法(不知道对不对,这还得请大家伙批评指教)。题干如下:

姚明上楼梯,每步可上一阶或者二阶或者三阶。他要上二十阶楼梯,但规定不能踩到第五阶(可能有地雷),也不能踩到第十阶(可能有狗屎),还不能踩到第十五阶(可能有火坑),有多少种不同的方法?

我想静静(不要问我静静是谁,跟她不熟)

。。。。。。

。。。。。。

。。。。。。

三十分钟过去了,算了,还是用编程递归来做吧。

我们想踏上第二十阶梯之前我们的脚在第几阶梯呢?那么就有从第17或者第18或者第19级阶梯走到第20阶梯这三种可能,如果用f(n)表示第n级阶梯的可能

数,则有f(20)=f(19)+f(18)+f(17),同理f(19),f(18),f(17)依次递归。如果要避免踏入第5,,10,15级阶梯,就只要令f(5)==f(10)==f(15)就好了。至于第一阶梯,第二阶梯,第三阶梯的可能数我们可以直接计算出来为1,2,3。

接下来就是写程序啦,程序如下(仅限cpp,其它版本的敬请诸君补充):

#include <stdio.h>

int f(int n);

void main()

{

int num=20;

printf("\n",num,f(num)-f(5)-f(10)-f(15));

}

int f(int n)

{

if(n==1)

{

return 1;

}

else if(n==2)

{

return 2;

}

else if(n==3)

{

return 3;

}

else if(n==5 || n==10 || n==15)

{

return 0;

}

else

{

return f(n-1)+f(n-2)+f(n-3);

}

}

若有疏漏,欢迎诸位指教。抬爱抬爱。

还觉得不过瘾?好吧,我再留道思考题吧,以飨众卿。

若100除以10=10,14除以6等于2,那么12除以5等于多少?

最后,附歌一首,祝诸君度过一个美好的周末。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档