百度测试工程师笔试


两种题,选择题60,笔试题40
选择题随便出的,啥都有,我也随便选的,😄
笔试题两道
第一道,小明买了两个游戏,第一个有n个关卡,第二个有m个关卡,然后就是两个数组,ai为过第i关的时间,给定总时间t,求最多能过多少关
这个比较简单,就不说了
第二道, 小天最爱吃的零食有两种,分别为A、B。为了健康着想,他每天最多吃一种零食(当然也可以不吃),并且不能连续两天吃同一种零食。
他列出了接下来n天的计划,第i天他可以选择的A零食的美味度为ai,可以选择的B零食的美味度为bi。请计算他n天能吃到的零食的美味度之和的最大值。

我写的代码是这样的,但只过了18%,求大神

import java.util.*;

public class Main3 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int []a= new int[n];
        int []b= new int[n];

        for(int i=0;i<n;i++){
            a[i]=in.nextInt();
        }

        for(int i=0;i<n;i++){
            b[i]=in.nextInt();
        }

        long[] dpa= new long[n];
        dpa[0]=a[0]; dpa[1]=b[0]+a[1];
        long[] dpb= new long[n];
        dpb[0]=b[0]; dpb[1]=a[0]+b[1];

        for(int i=2;i<n;i++){
            dpa[i]=Math.max(dpa[i-2]+a[i],dpb[i-1]+a[i]);
            dpb[i]=Math.max(dpb[i-2]+b[i],dpa[i-1]+b[i]);
        }
   
        System.out.println(Math.max(dpa[n-1],dpb[n-1] ));
    }

}

#百度笔试#
全部评论
第二题是一维dp,数据比较坑,稍微注意下处理数据溢出
点赞 回复 分享
发布于 2022-09-13 21:34 北京
我想出来了,条件写少了,应该是 dpa[i]=Math.max(dpa[i-2]+a[i],Math.max(dpb[i-1]+a[i],dpb[i-2]+a[i]));  dpb[i]=Math.max(dpb[i-2]+b[i],Math.max(dpa[i-2]+b[i],dpa[i-1]+b[i]));
点赞 回复 分享
发布于 2022-09-13 21:47 陕西
楼主可以给一下你的第一题思路吗?我第一个只有百分之五十的通过率
点赞 回复 分享
发布于 2022-09-14 07:04 陕西
求第一题
点赞 回复 分享
发布于 2022-09-13 21:27 江苏
第二题我也是18%,哭了,怎么都找不到
点赞 回复 分享
发布于 2022-09-14 01:52 广东
第二题
点赞 回复 分享
发布于 2022-09-14 11:42 北京

相关推荐

不愿透露姓名的神秘牛友
03-26 16:16
点赞 评论 收藏
分享
02-17 20:43
西北大学 Java
在做测评的猫头鹰很紧张:他问你,你问deep seek
点赞 评论 收藏
分享
评论
点赞
15
分享

创作者周榜

更多
牛客网
牛客企业服务