超聚变 - 嵌入式软件开发工程师 - 笔试

❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗

alt

本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。

岗位:25届嵌入式软件开发工程师(测试装备方向)

题型:3 道编程题

1、编程题

1.1

找 2 倍数字:

有一组正整数(大于 0)序列,请问有多少对数字满足:其中一个数字是另外一个数字的 2 倍

输入描述:

输入一个数字 T,表示有 T 组测试数据;每个测试数据输入一个数字 n( 1<n<100),表示有多少数字;然后再输入数字,空格隔开;

输出描述:

对于每组测试数据,输出满足条件的组数。

示例1:

输入:
2
6
1 3 5 7 9 11
7
6 2 4 3 33 10 1

输出:
0
3

解答(90%通过率):

#include <stdio.h>
#include <stdlib.h>

int main() {
    int T;
    scanf("%d", &T);

    while (T--) {
        int n;
        scanf("%d", &n);
        int* arr = (int*)malloc(n * sizeof(int));
        for (int i = 0; i < n; i++) {
            scanf("%d", &arr[i]);
        }

        int count = 0;
        int hash[201] = {0};

        for (int i = 0; i < n; i++) {
            if (arr[i] <= 200) {
                hash[arr[i]]++;
            }
        }

        for (int i = 0; i < n; i++) {
            if (arr[i] > 0 && arr[i] * 2 <= 200 && hash[arr[i] * 2] > 0) {
                count++;
                
                hash[arr[i] * 2]--;
            }
        }

        printf("%d\n", count);
        free(arr);
    }

    return 0;
}

1.2

搜索矩阵:

实现一个程序 search_matrix(matrix),参数 matrix 是一个仅包含 0 或 1 两种数字的矩阵,程序应返回输入矩阵中包含的最大正方形子矩阵(长和宽相等)的区域面积。

例如:
如果 matrix 是[“101011111”,“0000000111”, “1010110111”,“0000110001”],那么它看起来像下面的矩阵:

1 0 1 0 1 1 1 1 1 1
0 0 0 0 0 0 0 1 1 1
1 0 1 0 1 1 0 1 1 1
0 0 0 0 1 1 0 0 0 1

对于上面的输入,最大的子矩阵是一个 3×3 的矩阵,程序只要返回最大子矩阵的面积即可,如上面的矩阵即返回 9(3×3)

输入描述:

第一行输入为一个数字 N,代表下面有几行
第 2 行到第 N+1 行是代表矩阵的 0 和 1 组成的字符串,每行的长度相同

输出描述:

返回一个数字,代表输入矩阵的最大正方子矩阵的面积。

示例 1:

输入:
3
110
111
110

输出:4

示例 2:

输入:
1
1001111111

输出:1

说明: 可能存在多个子矩阵,返回面积最大的一个

示例 3:

输入:
8
1010111111
0000000111
1010110111
0000111111
1010111111
0000001111
1010111111
0000110001

输出:16

说明:可能存在多个子矩阵,返回面积最大的一个

解答:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int search_matrix(char** matrix, int N) {
    if (N == 0) return 0;
    int M = strlen(matrix[0]);
    int max_side = 0;
    int **dp = (int **)malloc(N * sizeof(int *));

    for (int i = 0; i < N; i++) {
        dp[i] = (int *)malloc(M * sizeof(int));
        memset(dp[i], 0, M * sizeof(int));
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            if (matrix[i][j] == '1') {
                if (i == 0 || j == 0) {
                    dp[i][j] = 

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

欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,同时还整理了嵌入式软件相关的八股知识。专栏内容涵盖C/C++基础、嵌软常见通信协议、ARM、FreeRTOS、Linux OS相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。

全部评论
点赞 回复 分享
发布于 03-31 11:11 河南

相关推荐

可以不说话:笔试a了3道半,今天说是挂了😭😭
投递汇丰科技等公司6个岗位
点赞 评论 收藏
分享
Elastic90:公司不要求加班,但 又不允许你准点下班,经典又当又立
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务