科大讯飞嵌入式软件笔试编程题

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

《嵌入式软件笔试-2023年真题汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

《嵌入式软件笔试-2024年真题汇总》https://blog.nowcoder.net/zhuanlan/04yYym

第一题:

题意

给出一个长度为n的序列a1, a2, a3…an,请你按照以下规则输出序列的中位数: 1.如果序列的大小为奇数,则中位数是按照升序排序后中间的数字。 2.如果序列的大小为偶数:

  • 按照升序排序后,中间的两个数字x=y时输出任意一个即可;
  • 按照升序排序后,中间的两个数字x!=y时输出min(x,y),即 x y 中较小的那个数。当输出中位数 mid时,该中位数 mid从序列 a中消失,再输出消失后的序列 a’ 的中位数。

重复上述步骤,直至全部将序列 a全部输出。

输入描述

第一行输入一个正整数 n代表序列长度。第二行输入n 个正整数a1, a2, a3…an代表序列元素

输出描述

在一行上输出 n 个整数代表依次提取出的中位数

输入

4

1 8 9 5

输出

5 8 1 9

输入

6

6 6 6 6 6 6

输出

6 6 6 6 6 6

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

using namespace std;

// 找到当前序列的中位数
int findMedian(vector<int>& a) {
    sort(a.begin(), a.end());
    int n = a.size();
    if (n % 2 == 1) {
        return a[n / 2];
    } else {
        return min(a[n / 2 - 1], a[n / 2]);
    }
}

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

    vector<int> result;
    while (!a.empty()) {
        int median = findMedian(a);
        result.push_back(median);
        // 只删除一个中位数
        auto it = find(a.begin(), a.end(), median);
        if (it != a.end()) {
            a.erase(it);
        }
    }

    for (int i = 0; i < result.size(); ++i) {
        cout << result[i] << " ";
    }
    cout << endl;
}

int main() {
    solve();
    return 0;
}

第二题:

题意

给定一个仅由小写字母组成、长度为n的字符串 s则字符串有(2^n)-1个非空子序列。请你求出所有子序列中不同字符的个数总和,由于答案较大,你需要输出对(10^9)+7取模后的结果。

输入描述

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

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

全部评论

相关推荐

1.&nbsp;嵌入式系统的基本组成部分有哪些?2.&nbsp;描述一下嵌入式系统的实时性要求。3.&nbsp;什么是嵌入式操作系统?常见的嵌入式操作系统有哪些?4.&nbsp;如何在嵌入式系统中实现多任务调度?5.&nbsp;描述一下中断的工作原理。6.&nbsp;什么是看门狗定时器?它的作用是什么?7.&nbsp;如何处理嵌入式系统中的功耗管理?8.&nbsp;描述一下如何实现串口通信。9.&nbsp;什么是PWM(脉宽调制),它的应用场景有哪些?10.&nbsp;如何在嵌入式系统中实现I2C通信?11.&nbsp;描述一下嵌入式系统中的存储器管理。12.&nbsp;什么是RTOS(实时操作系统)?它与普通操作系统有什么区别?13.&nbsp;如何进行嵌入式系统的调试?14.&nbsp;描述一下如何实现SPI通信。15.&nbsp;什么是嵌入式系统中的任务优先级?16.&nbsp;如何处理嵌入式系统中的异常和错误?17.&nbsp;描述一下嵌入式系统中的数据采集流程。18.&nbsp;什么是嵌入式系统中的信号量,如何使用?19.&nbsp;如何在嵌入式系统中实现定时器?20.&nbsp;描述一下如何使用DMA(直接内存访问)。21.&nbsp;什么是嵌入式系统中的实时调度算法?22.&nbsp;如何在嵌入式系统中实现网络通信?23.&nbsp;描述一下如何进行固件升级。24.&nbsp;什么是嵌入式系统中的资源管理?25.&nbsp;如何处理嵌入式系统中的输入输出(I/O)操作?26.&nbsp;什么是嵌入式系统中的状态机?如何实现?27.&nbsp;描述一下如何进行嵌入式系统的性能优化。28.&nbsp;如何在嵌入式系统中实现数据加密?29.&nbsp;什么是嵌入式系统中的任务间通信?30.&nbsp;描述一下如何进行嵌入式系统的版本管理。面经答案在专栏中&nbsp;&nbsp;c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看30道真题和解析
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务