首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-24 10:44
中国传媒大学 设计
美好的一天从地铁车厢里遇到mentor开始
从住的地方到公司好像有6站地铁,北京的早高峰,车厢里挤满了人。。还剩一站的时候,我决定往前站一站靠近门方便下车,于是挤到了第二排,等待中~~(正前方的人在看小说,我也不想看别人屏幕的,但是一抬头就看到了😭😭)突然斜前方的一位也掏出了手机,打开了牛客。。。嗯??牛客??😯😯😯我开始打量,不是,怎么这么眼熟的穿搭,虽然地铁里有点光线不好,但我还是辨别出来了那是cici姐的穿搭🤡(我靠!当时我内心的一慌,我还是个内向羞涩的小女孩,还不知道在地铁遇到mt该怎么办的应对方法)打招呼吗?好多人。。我不敢。。。不到招呼吗?那是不是不礼貌。。。怎么办😭😭😭于是我掏出手机发给了我的同事。。--...
真烦好烦真烦:
牛友怎么应对的,我上周也遇到了,但是我直接掉头跑了
我和mentor的爱恨情仇
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
04-29 20:49
已编辑
春招Offer决赛圈
鼠鼠是安徽人,技术栈为Java,几个offer的大致情况如下,恳请牛客的各位佬不吝赐教1. 汇丰科技是外企,优点是工作时间10 7 5,年假20天,带薪病假12天。 缺点是稳定性未知,据说存在3年合同到期后不续签的问题。离安徽老家较远。2. 泰隆银行是民营银行,优点是离家近,总包考虑到杭州和西安的物价和汇丰差不多。 缺点是由于每周124加班到9点,节假日比汇丰少,稳定性未知。杭州房价比西安高很多,买房困难。3. 东方财富优点是总包很高,技术比上面两家好,更好跳槽 缺点不明,稳定性未知,如果有佬了解的,愿意有偿请佬解惑呀!4. 剩余两家网上信息不多,...
投递东方财富等公司10个岗位 >
点赞
评论
收藏
分享
03-20 13:05
哈尔滨理工大学 算法工程师
这种简历在成都还能进互联网公司吗🥹
点赞
评论
收藏
分享
03-14 11:20
湖南文理学院 Java
天崩开局,如何逆转🐭
bg:双非学院本😵从3月初一直投到现在,就一个小厂面试。简历投不出去该怎么办。继续投日常实习,或者有其他路子可走。9/2✌️、大佬们快来看看吧。 #简历中的项目经历要怎么写# #你已经投递多少份简历了#
一天代码十万三:
没办法,看运气吧,只能说这学历,三段实习投不出去
简历中的项目经历要怎么写
你已经投递多少份简历了
点赞
评论
收藏
分享
04-29 20:18
中央民族大学 Java
暑期后端高频问题汇总
菜鸡暑期一共面了40+场的大厂的面试,在这里汇总我遇见的问题及高频问题,希望帮助到五月份的同学们拿到暑期offer。先叠个甲,可能因为学历问题,腾讯以及阿里给我的面试并不多,40场中接近一半是字节,所以可能会有一些内容不涉及,仅作参考。计算机网络TCP三次握手四次挥手,为什么是三次四次问题time_wait状态的作用,以及为什么持续时间是2MSL?现代网络发展中,这个还是固定的2MSL吗?TCP超时重传机制,sack算法,hpack算法TCP拥塞控制(慢启动,拥塞发生,拥塞避免,快速恢复)HTTP2和HTTP3的特点操作系统进程间通信方式Linux为何采用页式内存管理io多路复用,...
牛客创作赏金赛
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
6.8W
2
...
左手敲代码的程序员,不配拥有offer吗?
5.6W
3
...
想听实话吗,校招ssp聊聊大厂客户端
2.9W
4
...
大连某小区保安一面
2.6W
5
...
北京到底有谁在啊?
9085
6
...
后端简历上最值得写的项目
8887
7
...
五一假期,弯道超车时间表
7732
8
...
美团/饿了么/京东 配送端面经
6489
9
...
暑期实习终章
6265
10
...
五一别写你那破开源代码了
5885
创作者周榜
更多
正在热议
更多
#
找工作,行业重要还是岗位重要?
#
6557次浏览
84人参与
#
盲审过后你想做什么?
#
12240次浏览
108人参与
#
五一之后,实习真的很难找吗?
#
43863次浏览
311人参与
#
领导秒批的请假话术
#
9468次浏览
72人参与
#
安克创新求职进展汇总
#
32458次浏览
413人参与
#
如果不工作真的会快乐吗
#
100801次浏览
861人参与
#
每人推荐一个小而美的高薪公司
#
72805次浏览
1357人参与
#
京东工作体验
#
12940次浏览
90人参与
#
五一假期,你打算“躺”还是“卷”?
#
24575次浏览
388人参与
#
考研可以缓解求职焦虑吗
#
20333次浏览
241人参与
#
如何缓解入职前的焦虑
#
171534次浏览
1267人参与
#
面试等了一周没回复,还有戏吗
#
115122次浏览
1072人参与
#
找工作前vs找工作后的心路变化
#
7090次浏览
64人参与
#
应届生薪资多少才合理?
#
3031次浏览
24人参与
#
写简历别走弯路
#
714015次浏览
7848人参与
#
你喜欢工作还是上学
#
37247次浏览
407人参与
#
如果有时光机,你最想去到哪个年纪?
#
43159次浏览
765人参与
#
牛友们的论文几号送审
#
27118次浏览
623人参与
#
扒一扒那些奇葩实习经历
#
41426次浏览
770人参与
#
24届的你们现状如何了?
#
64474次浏览
377人参与
牛客网
牛客企业服务