华为嵌入式软件开发工程师笔试5-31
公号:嵌入式未来
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
通过率:第一题95%,第二题92%,第三题18%(没有附上)
3、安装太阳能板利润最大化
某公司计划在A地区选择一片区域投资建设太阳能发电站。
由于太阳能发电与地形、光照等自然条件强相关,因此在建设前,需要先进行建站选址、确定安装大阳能板的数量,让发电利润最大。
发电站每年的利润可以用以下公式计算
其中:
Ki:表示第i个太阳能板的年发电收入。与太阳能板安装位置的自然条件 (光照等) 有关。
N: 表示太阳能板总数量
C: 表示平均每个太阳能板每年的支出费用(老化损耗、维修等) ,取固定值: 5。
整个A地区是一个矩形区域。
前期技术人员,按照一块太阳能板覆盖的面积,将A地区内部划分为 m*n 个地块。提前测并计算出每一个地块的年发电收入,使用 m*n 的发电收入矩阵表示。
为了减少管理成本,充分利用土地,必须选择一个 矩形区域 进行排列安装。
请实现功能,求出发电站应安装多少块太阳能板,年利润最大,最大为多少。
输入
第一行包含两个正整数: m、n,空格分隔。表示A地区分成的 m * n 个地块;0<m、n<1024。
后续 n行,每行 m 个正整数,空格分隔。表示每个小块区域的太阳能板年发电收入。0<= 收入<100.
输出
两个整数值,空格分隔。第一个值表示安装的太阳能板总量,第二个值表示最大利润。
注意:
1、如果存在最大利润相同的情况,则输出太阳能板总量较小的结果。
2、如果所有地块利润都是负数,则需选择损失最少的那个地块,安装一块太阳能板。
样例1
输入:
3 2
4 10 7
3 2 9
输出:
4 8
解释:
4 10 7
3 2 9
选择的是: 10、7、2、9 这一正方形区域的 4 个地块。利润是: (10 + 7 + 2 + 9)- (4 * 5) = 8。
样例2
输入:
2 2
1 2
3 4
输出:
1-1
解释:每个地块的利润都是负数,则选择损失最小的一块。
1、获取网络忙时数据
工程师小王想要从海量的网络数据中,筛选出忙时数据。由于是海量数据,小王没办法对海量数据进行排序,再取topN的忙时数据(将数据从大到小排序,取前N个)。聪明的小王想到了使用固定大小的优先级队列来进行数据筛选。为了场景简化,我们用正整数集来表示海量的网络数据,同时只取N个忙时数据,也即只取N个最大的正整数。针对每一批数据输入,单独输出一行结果,直接将N个正整数拼接完完整的一行字符串输出即可。
输入
第一行是正整数N和M,N为忙时个数,取值范围[1,24], M为输入的数据行数,范围[1,1000];
接下来M行,每行两个正整数A,B,以空格分隔,表示有A个重复的正整数B,A、B的取值范围[1,2147483647],如
3 5
1 5
6 3
2 2
5 4
1 6
输出
输出每增加一批数据对应的队列结果,直接将队列里的所有数据集从大到小拼接成字符串输出。
如上例输入的输出为:
第一次输入1个5,则队列输出为5
第二次输入6个3,则队列输出为533
第三次输入2个2,则队列输出为533
第四次输入5个4,则队列输出为544
第五次输入1个6,则队列输出为654
所以最终的输出结果为:
5
533
533
544
654
样例1
输入:
1 3
2 3
1 6
7 4
输出:
3
6
6
解释:
只保留一个忙时
第一次输入2个3,则队列输出为3
第二次输入1个6,则队列输出为6
第三次输入7个4,则队列输出为6
所以最终输出结果为
3
6
6
#include <iostream> #include <queue> #include <vector> using namespace
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。