得物笔试 得物笔试题 0327

笔试时间:2024年03月27日

历史笔试传送门:2023秋招笔试合集

第一题

题目

即将进入假期的小A打算做很多作业,因为小A每天的心情不同,所以他每天可以做的作业数量可能不同。聪明的小A知道一直做作业是对身体不好的,所以需要他给自己制订一份劳逸结合的假期作业计划,也就是在每次做作业后都需要休息1天或2天(不能不休息,也不能休息大于2天),再继续做作业。爱学习的小A决定在假期的第1天或第2天开始做作业,那么他在假期内最多能做多少作业?

输入描述

第一行有1个正整数n,表示假期的天数;

第二行有n个正整数ai,表示小A每天能完成的作业数。

1≤n≤ 10000,0≤ai≤ 10000

输出描述

输出一行一个整数,表示小A在假期内最多能做的作业数。

样例输入

5

2 1 2 1 2

样例输出

6

参考题解

dp动态规划,参考leetcode打家劫舍。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const int N = 100010;
const int INF = 0x3f3f3f3f;
int f[N][2];

int main() {
    int n;
    cin >> n;
    
    f[0][0] = 0;
    f[0][1] = -INF;
    
    for (int i = 1; i <= n; i++) {
        int v;
        cin >> v;
        f[i][1] = f[i - 1][0] + v;
        f[i][0] = max(f[i - 1][1], f[i - 1][0]);
    }
    
    cout << max(f[n][0], f[n][1]) << endl;
    
    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.*;
class Main{

    static int N = 100010,n,INF = 0x3f3f3f3f;
    static int[][] f = new int[N][2];


    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        f[0][0]=0;
        f[0][1]=-INF;
        for(int i=1;i<=n;i++){
            int v = sc.nextInt();
            f[i][1] = f[i-1][0]+v;
            f[i][0] = Math.max(f[i-1][1],f[i-1][0]);
        }
        System.out.println(Math.max(f[n][0]

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务