超聚变 - 嵌入式软件开发工程师 - 笔试
❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗
本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。
岗位: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相关问题汇总,希望能帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。