华为软件类笔试-嵌入式软件开发 8-30

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《软件开发笔试汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

第三题内存分配

系统由n个任务组成,任务运行有依赖关系,前序任务执行完毕才可以启动后续任务。任务在启动前申请内存,执行完毕后释放,内存释放后可用于其他任务使用。每个任务的运行时间相等。请计算系统所有任务执行所需要的最小内存。

解答要求

时间限制: C/C++1000ms其他语言: 2000ms内存限制C/C++256MB其他语言:512MB

输入

1行为1个正整数n,表示任务个数,n<20

2行为n个正整数,表示每个任务所需要的内存大小,0<内存<1000

3行为n个取值为01的数,表示任务0对其他任务的依赖关系,0表示不依赖,1表示依赖

...

3+n行为n个取值为01的数,表示任务n-1对其他任务的依赖关系,0表示不依赖,1表示依赖

输出

输出系统任务执行所需要的最小内存

样例1

输入

9 50 50 80 40 40 40 60 60 60 0 0 0 0 0 0 0 0 0  1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0  0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0

输出

120

#include <iostream>
#include <vector>
#include <unordered_map>
#include <queue>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> mem(n);
    for (int i = 0; i < n; i++) {
        cin >> mem[i];
    }

    unordered_map<int, vector<int>> graph;
    vector<int> indegree(n, 0);

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int tmp;
            cin >> tmp;
            if (tmp == 1) {
                graph[j].push_back(i);
                indegree[i]++;
            }
        }
    }

    queue<int> q;

    for (int i = 0; i < n; i++) {
        if (indegree[i] == 0) {
            q.push(i);
        }
    }

    int res = 0;

    while (!q.empty()) {
        int size = q.size();
        int cur = 0;
        for (int i = 0; i < size; i++) {
            int node = q.front();
            q.pop();
            cur += mem[node];
            for (int next : graph[node]) {
                indegree[next]--;
                if (indegree[next] == 0) {
                    q.push(next);
                }
            }
        }
        res = max(res, cur);
    }

    cout << res << endl;

    return 0;
}

第一题智慧打卡系统

某家高科技公司为方便员工省去每日上下班的打卡操作,计划推广使用智慧打卡系统。其运行的原理是系统会记录员工当日进出门禁的时间(员工在上班期间可能会多次进出门禁,格式为24小时制,小时:分钟,“HH:MM”)

现在请编写一个算法,计算员工当日的工作时长(单位:分钟),具体要求如下:

1、单次离岗15min以内,不从工作时长中扣除。

212:0014:00为午休时间,不算工作时长。

318:0019:30为晚饭时间,不算工作明长。

解答要求

时间限制:C/C++1000ms其他语言:2000ms内存限制:C/C++256MB其他语言:512MB

输入

第一行:员工当天进门禁的次数n

第二行:员工当天进门禁的所有时间,以空格分隔。

第三行:员工当天出门禁的次数m

第四行:员工当天出门禁的所有时间,以空格分隔。

:0<n,m<100,不存在相同的出入门禁时间,也不存在连续的出门禁或入门禁的情况。

输出

当日的工作时长。

样例1

输入

5 07:50 08:50 12:30 13:40 19:50 5 08:45 12:20 13:20 18:30 20:30

输出

530

解释:

员工的工作时段为07:50-12:00,14:00~18:00,19:50~20:30,工作时长为530分钟

样例2

输入

4 08:30 12:30 14:00 18:20

4 12:00 13:00 16:50 19:00

输出

380

解释员工的工作时段为08:30~12:00,14:00~16:50,工作时长为380分钟

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>


using namespace std;

int main() {
    int n, m;
    cin >> n;

    vector<int> intime(n), outtime(n);
    string time_str;
    int hour, minute;

    for(int i = 0; i < n; i++) {
        cin >> time_str;
        sscanf(time_str.c_str(), "%d:%d", &hour, &

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

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务