PDD - 实习 - 笔试

2025年3月9日 10:00-12:00

四道编程题100分(每道题25分):

多多的传送门:

在 x = 0 的位置,每次可以从数组中选择一个数字进行传送,传送到 x = x + a 的位置,数组中的数字有正数或负数。

多多有一次“反转能力”,使自己的位置从 x = t 传送到 x = -t 的位置,每次传送可以使用一次(或不使用)。

问多多能传送到的最远位置距离x = 0是多少?

输入:int[]

输出:能达到的最远位置

例如:
输入:[1,-3,4,2,-1]
输出:11多多先选择-3,-1传送到-4位置使用反转能力到4,再选择1,4,2到达位置11

多多的传送门2:

在 x = 0 的位置,每次可以从数组中选择一个数字进行传送,但必须依次选择输入数组中的数字。

多多有一次“反转能力”,使自己的位置从x = t 传送到 x = -t 的位置,问多多能传送到的最远位置距离x = 0是多少?

输入:int[]

输出:能达到的最远位置

例如:
输入:[1,-4,10,-30,2]
输出:37多多先选择1,-4,10传送到7位置使用反转能力到-7,再选择-30到达最远位置-37

多多爱读书:

每次能读一页书,读一页书需要1分钟,能汲取当页书的所有知识量。

多多有一个能力,每分钟能读2页书,但汲取的知识量是两页书知识量总和的一半。

问给定一个书的页数和时间,多多在该时间内最多能汲取多少知识量,如果不能读完书返回-1。

输入:int[] 代表每页书的知识量,int 总时间

输出:double 规定时间能读完书能汲取的最大知识量

例如:
输入:[1,2,3,2,1]  3
输出:6.0多多第1分钟读2页书,获得知识量1.5,第2分钟读1页书,获得知识量3,第3分钟读2页书,获得知识量1.5,共6.0

座位安排:

一共n行m列座位,给一群身高各不相同的客人分配座位,保证身高的坐在后面,身高矮的坐在前面。

设身高为 hi<hj ,则其座位索引 si<sj 。

客人会顺序到场,坐在右边的客人路过左边的座位时如果有客人落座,那么会感到拥挤,每路过一个落座的客人拥挤程度 +1 。

问如何分配座位使得拥挤程度最小?

输入:int 多少行座位,int 多少列座位,int[] 代表客人到达的先后顺序

输出:最小的拥挤度

例如:
输入:3 3 [3,2,1,1,1,1,1,4,5]
输出:3第一个身高为3的客人坐在(3,1)(第三行第一列),第二个身高为2的客人坐在(2,3),第三到第七个身高为1的客人坐在第一排和第二排的空位,第八个身高为4的客人坐在(3,2),路过身高3的客人,拥挤度+1,第九个身高为5的客人坐在(3,3),路过身高3、4的客人,拥挤度+2

全部评论
问一下大家第二题和第三题动规 有什么边缘条件限制吗? 一个66.6%一个90% 想了半天 没想出来 到底什么情况没考虑到
点赞 回复 分享
发布于 今天 07:36 美国

相关推荐

评论
4
6
分享

创作者周榜

更多
牛客网
牛客企业服务