百度测试工程师笔试
两种题,选择题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] ));
}
}
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] ));
}
}