首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客868052144号
天津科技大学 计算机类
发布于河南
关注
已关注
取消关注
@zanejins:
25 动态规划DP--递推求解
题目来源2008年华中科技大学计算机保研机试真题题目描述N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)输入说明输入包括一个整数N,(1<=N<90)。输出说明可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。样例展示输入:4复制输出:5问题分析这个问题就是一个典型的递推问题。若我们把N分别等于1,2,3...的答案依次排列成一个数列,我们即需求这个数列每一个数的值。我们定义f[n]为数列中的第n个数字,同时F[n]为台阶总数为n时的上台阶方式总数。首先,我们必须确定数列之间的递推关系。当n大于2时,我们考虑每一种上台阶方式的最后一步,由于只有两种行走的方法,因此它只可能是从n-1阶经过一步走到n阶,或者从n-2阶经过2步走到n阶。我们分别考虑这两种走法,即我们将此时所有的上台阶方式按照最后一步走法的不同分为两类,分别确定这两类的上台阶数目。这样我们就确定达到n阶楼梯总的上楼方式个数为F[n-1]和F[n-2]的和,即F[n]=F[n-1]+F[n-2]。这就是我们这个数列的递归关系。由初始值F[1]=1,F[2]=2,我们就能得到所有F[n]的值。C++代码#include<iostream>using namespace std;typedef long long ll;ll F[100];int main() { F[1]=1; F[2]=2; for(int i=3;i<=90;i++) { F[i]=F[i-1]+F[i-2]; } int n; while(scanf("%d",&n)!=EOF) { printf("%lld\n",F[n]); } return 0;}不容易系列之一题目描述大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。话虽这样说,我还是要告诉大家,要想失败到一定程度也是不容易的。比如,我高中的时候,就有一个神奇的女生,在英语考试的时候,竟然把 40 个单项选择题全部做错了!大家都学过概率论,应该知道出现这种情况的概率,所以至今我都觉得这是一件神奇的事情。如果套用一句经典的评语,我们可以这样总结:一个人做错一道选择题并不难,难的是全部做错,一个不对。不幸的是,这种小概率事件又发生了,而且就在我们身边:事情是这样的——HDU 有个网名叫做 8006 的男性同学,结交网友无数,最近该同学玩起了浪漫,同时给 n 个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟!现在的问题是:请大家帮可怜的 8006 同学计算一下,一共有多少种可能的错误方式呢?输入说明输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正整数 n(1<n<=20),n 表示 8006 的网友的人数。输出说明对于每行输入请输出可能的错误方式的数量,每个实例的输出占用一行。样例说明样例输入:23样例输出:12问题分析同样的,在该例子中我们也容易得到规模较小时的错装方式数量。如n为1时,数量为0;n为2时数量为1.我们按照n的取值顺序将所有的错装方式数量排列为一个数列,同样F[n]表示数列里第n个数的取值,F[n]同时代表n个信封的错装方式总数。接下来我们确定该数列的递推关系。当n大于3时候,我们考虑n封信全部装错的情况。将信封按照顺序由1到n编号。在任意一种封装方案中,假设n号信封里面装的是k号信封的信,而n号信封里的信则封装在m号信封里。我们按照k和m的相等与否将总的装错方式分为两类。若k不等于m,交换n号信封和m号信封的信后,n号信封里装的恰好是对应的信,而m号信封中错装k号信封的信,即除n号信封外其余n-1个信封装错,其装错方式为F[n-1],又由于m的n-1个可能取值,这类错装总数为(n-1)F[n-1]。也可以理解为,在n-1个信封错装的F[n-1]的基础上,将n号信封所装的信与n-1个信封中任意一个信封交换后,得到所有信封的全部装错的方式数。另一种情况,若k等于m,交换n号信封和m号信封后,n和信封和m号信封里面装的恰好是对应的信,这样除她们之外剩余的n-2个信封全部错装,其错装方式为F[n-2],又由于m的n-1个取值,这类错装方式总数为(n-1)* F[n-2]。也可以理解为,在n-2个信封全部错装的基础上,交换最后两个信封中的信(n号信封和1到n-1号信封中任意一个)共有n-1种选择,使得所有的信封全部错装的方式数。综上所述:F[n]=(n-1) * F[n-1] + (n-1) * F[n-2]C++代码#include<iostream>using namespace std;typedef long long ll;ll F[21];int main() { F[1]=0; F[2]=1; for(int i=3;i<=20;i++) { F[i]=(i-1)*F[i-1]+(i-1)*F[i-2]; } int n; while(scanf("%d",&n)!=EOF) { printf("%lld\n",F[n]); //输出 } return 0;}吃糖果https://www.nowcoder.com/questionTerminal/72015680c32b449899e81f1470836097C++代码//话说这应该是和爬楼梯一样吧#include<iostream>using namespace std;typedef long long ll;ll dp[21];int main() { dp[1]=1; dp[2]=2; for(int i=3;i<=20;i++) { dp[i]=dp[i-1]+dp[i-2]; } int n; while(scanf("%d",&n)!=EOF) { printf("%d\n",dp[n]); } return 0;}
点赞 0
评论 0
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
犬粟
05-16 23:21
已编辑
华中科技大学 计算机类
5.14 腾讯后台二面结果是hr面
继一面二十分钟速通第二天进复试后,又遇到这种不可思议的事,不知道为什么,有没有懂哥解释下 现在还是复试链接状态,已经是最后的稻草了 5.16流程已结束👋🏻
点赞
评论
收藏
转发
资深老萌新
05-14 16:57
东北大学 计算机类
竞技世界-Java后端-一面(已 OC)
经历了美团和小米的几场拷打后,面JJ已经随心所欲了,确实也简单太多。不过也有几道卡住我了,遂随手记录一下~整体比前面几场容易太多哈哈哈,爽局了几乎() 八股 Java Java 基本数据类型?——以为稳了,上次小米漏了 short 和 byte,这次记住了,从 short 开始说,结果最后剩一个 char 由于没说 String 所以想半天才想到,难蚌,这次卡完应该就记牢牢了 String 和 StringBuilder 有什么区别?——(怪,不应该问 StringBuffer 吗,咋比较这俩)String 不可变;StringBuilder 本身拼接修改 简单说一下 JVM 内存模型——老...
Kiro面经
软件开发2024笔面经
点赞
评论
收藏
转发
添砖加瓦选手
05-17 17:18
已编辑
北京市顺义牛栏山第一中学 计算机类
小厂日常,去or拒?
投票
#牛客帮帮团来啦!有问必答#这种追责是个什么情况,实习要求都这么硬性吗(ps: java开发岗 前后端一共十几个人,好像公司才三十人
牛客帮帮团来啦!有问必答
点赞
评论
收藏
转发
26加瓦鼠鼠
05-13 09:18
莆田学院 计算机类
后续开了
逆天,无工资
点赞
评论
收藏
转发
_陈顺
05-16 00:27
已编辑
门头沟学院 电子信息类
腾讯 后台开发 二面
概述:5月7号面试,腾讯会议,30分钟,问的不多,主要是项目,问了少量八股面试流程:1.自我介绍2.项目来源3.什么是协程(用户态线程,用户栈,用户态切换)4.协程和线程相比有什么优势(轻量级、切换快、开销小,用户管理,配合非阻塞IO更好地实现异步并发)5.更好地实现异步并发是怎么理解的(IO操作时检测到需要等待缓冲时切换协程)6.线程也可以在等待时切换,协程的优势是什么(用户自己操作)7.轻量级怎么理解(线程的栈是MB级别的,协程的栈是KB级别的,线程在内核中切换,协程在用户态中切换)8.怎么设置非阻塞(fctnl)9.返回EAGAIN是什么意思(缓冲区没准备好)10.互斥锁怎么实现的(访问...
腾讯二面515人在聊
我的实习求职记录
软件开发2024笔面经
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
开摆了,写小说去了
6907
2
...
华为实习offer!终于告一段落了
6671
3
...
【有奖活动】浅聊一下我的实习⭐
6447
4
...
华为暑期开奖
6224
5
...
没offer的我们也很优秀偶
6014
6
...
25实习最后的倔强
5560
7
...
双非本 腾讯WXG暑期已offer | 附面经
4853
8
...
滴滴秋储-服务端开发 OC
4371
9
...
5.20携程笔试
4315
10
...
华子报批了
3901
正在热议
#
牛客帮帮团来啦!有问必答
#
812566次浏览
12964人参与
#
机械制造薪资爆料
#
319141次浏览
3727人参与
#
晒一晒我的offer
#
3457552次浏览
55165人参与
#
0offer是寒冬太冷还是我太菜
#
426491次浏览
4920人参与
#
如果可以选,你最想从事什么工作
#
185459次浏览
3066人参与
#
实习生应该准时下班吗
#
80461次浏览
591人参与
#
你觉得找工作该拿大厂还是小厂练手
#
61127次浏览
863人参与
#
海康威视求职进展汇总
#
101004次浏览
1213人参与
#
荣耀求职进展汇总
#
69845次浏览
703人参与
#
实习必须要去大厂吗?
#
13614次浏览
216人参与
#
软件开发投递记录
#
478507次浏览
7238人参与
#
宁德时代求职进展汇总
#
36935次浏览
411人参与
#
国企vs私企,你更想去?
#
20210次浏览
204人参与
#
实习工作,你找得还顺利吗?
#
41949次浏览
465人参与
#
想实习转正,又想准备秋招,我该怎么办
#
117119次浏览
1316人参与
#
求职遇到的搞笑事件
#
19554次浏览
286人参与
#
金三银四,你有感觉到吗
#
328079次浏览
4207人参与
#
你的秋招进行到哪一步了
#
367593次浏览
6393人参与
#
正在春招的你,也参与了去年秋招吗?
#
136156次浏览
1703人参与
#
非技术薪资爆料
#
73822次浏览
1000人参与
牛客网
牛客企业服务