面试准备
嵌入式攻城狮小白
开始摆烂
展开
-
插入排序算法的简单分析
听到一个很形象的比喻,插入排序就像是在整理扑克牌,每从桌上拿起一张,就要把它插入到手上之前已经按顺序拍好的扑克牌中,这样,直到拿起最后一张,将它放在合适的位置之后,手上的扑克牌就整体有序了。插入排序的程序如下:#include <iostream>using namespace std;void swap(int arr[], int a, int b){ if(a == b...原创 2020-03-05 11:04:47 · 189 阅读 · 0 评论 -
程序存储问题(贪心算法)
//blog.csdn.net/Adusts/article/details/80562828 程序存储问题问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是i l , 1 ≤i ≤n。程序存储问题要求确定这n 个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。对于给定的n个程序存放在磁带上的长度,编程计算磁带上最多可以存...转载 2019-01-13 20:37:08 · 2379 阅读 · 0 评论 -
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-4链式线性表倒数第K个
7-4 求链式线性表的倒数第K项 (20 分)给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1输出样例:7...转载 2018-11-13 16:30:56 · 593 阅读 · 0 评论 -
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-3 中位数
7-3 两个有序序列的中位数 (25 分)已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0&amp;amp;amp;amp;lt;N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用...原创 2018-11-12 12:45:44 · 1000 阅读 · 1 评论 -
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-2 装箱问题
7-2 装箱问题 (20 分)假设有N项物品,大小分别为s1、s2、…、si、…、sN,其中si为满足1≤si≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入...原创 2018-11-10 15:35:44 · 718 阅读 · 0 评论 -
结合字符串分隔问题学习string类型substr,append等函数的使用
substr是用来截取字符串中一段子字符的函数,最常用的形式如下:string s("abcdefghijk");string a=s.substr(0,8);//获得字符串s中0位开始,长度为8的子串得到的a为:abcdefgh。substr(start,length);start为原字符串的起始位置;length为从原字符串中要截取的长度,如果为0的话,表示从起始位置开始一直到结...原创 2019-03-10 10:09:40 · 399 阅读 · 0 评论 -
getline,cin的使用场合以及string类型中每个字符的含义
在编程题中,需要输入字符的时候,到底改用getline还是cin,getline默认是以回车为结束符的,所以如果需要输入的是一个含有空格的字符串,那么直接用默认的getline函数一次就可以了,而cin是以空格为结束符的,所以如果要将一个含有空格的字符串里面的字符全部输入的话,需要用一个循环while(cin>>str);string类型的每个字符str[i]是int类型的,不再是s...原创 2019-03-10 09:36:09 · 250 阅读 · 0 评论 -
请编写一段代码,实现两个单向有序链表的合并
#include <iostream>#include <malloc.h>#include <vector>using namespace std;typedef struct Node{ int data; struct Node* next; }LNode,*Linklist;void PrintList(Linkl...原创 2019-03-06 00:20:07 · 841 阅读 · 0 评论 -
编程题(合并表记录)
合并表记录题目描述:数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数,然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对,多行示例1:输入40 10 21 22 3输出0 31 22 3程序一#include &lt;stdio.h&...原创 2018-09-25 21:55:59 · 342 阅读 · 0 评论 -
归并排序及求小和问题
归并排序归并排序是先将序列的每相邻的两个数字进行归并操作,形成两两一对排序好的元素,接着将上述序列再次归并,形成包含四个元素的序列。重复上述步骤,直到所有元素排序完毕。归并排序的C++版本完整程序及测试代码如下:#include <iostream>using namespace std;void mergeSort(int arr[], int length);void ...原创 2020-03-05 19:12:33 · 536 阅读 · 2 评论 -
用递归方法求最大值的程序调用层次分析
在B站上学习左程云算法课,对递归的过程有了新的认识,将用递归方法求最大值的程序进行调用层次分析,先将程序粘贴过来:C++版本#include <iostream>using namespace std;int getMax(int *arr, int leftIndex, int rightIndex){ if(leftIndex == rightIndex) { re...原创 2020-03-04 23:06:58 · 337 阅读 · 0 评论 -
透过全排列问题分析for循环递归的过程
全排列问题问题描述程序递归过程分析问题描述全排列:元素的所有可能的排列。例如:由a,b,c三个字母的全排列为abc,acb,bac,bca,cab,cba六个排列程序#include <iostream>using namespace std;void swap(char &a, char &b){ char tmp = a; a = b; b = ...原创 2020-04-14 15:55:08 · 292 阅读 · 0 评论 -
单链表的构造和反转
单链表构造(头结点存放数据信息)和链表反转头插法构造单链表(为了存入1->2->3->4->5的链表,需要按照1,5,4,3,2的顺序进行输入,即不考虑头结点的话是逆序的)尾插法构造单链表(为了存入1->2->3->4->5的链表,需要按照1,2,3,4,5的顺序进行输入)链表反转原地反转开辟新空间头插法构造单链表(为了存入1->2->3->4->5的链表,需要按照1,5,4,3,2的顺序进行输入,即不考虑头结点的话是逆序的)#in原创 2020-09-13 21:56:45 · 468 阅读 · 0 评论 -
左神贪心问题,递归,动态规划学习(C++)
参考:左 . 算法— 前缀树/贪心策略/递归/ 动态规划专题题目总结贪心问题程序利润最大化问题程序有限时间会议宣讲最多程序贪心问题一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的 金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金条,怎么分最省铜板?例如,给定数组{10,20,30},代表一共三个人,整块金条长度为10+20+30=60. 金条要分成1...原创 2020-04-14 00:21:16 · 241 阅读 · 0 评论 -
无序数组排序后相邻两数的最大差值(不能用计数排序)
给你n个任意整数,求排序后相邻两个数之间的最大差值,这里n可能有10^5,整数为任意32位整型。要求求解算法的时间复杂度为O(n)。思路描述参考:求无序数组排序后相邻俩数最大差值代码C++描述如下:#include <iostream>using namespace std;int max(int x, int y) { int z = x > y ? x : y;...原创 2020-03-20 10:45:24 · 388 阅读 · 0 评论 -
堆排序的非递归方法
堆是一种完全二叉树,第i个节点的左孩子是2 * i + 1,右孩子是 2 * i + 2,可以通过子节点求父节点:(i - 1)/ 2 。不管是左孩子还是右孩子都可以通过这种方式求的其父节点。对于一个数组,可以先将数组中的元素构建为一个大根堆,这样数组中的第一个数就是最大的值,将这个数与最后一个位置上的数进行交换,最后一个数就是最大值了,之后考虑对去掉这个元素的数组重新调整为一个大根堆,再将这个数...原创 2020-03-19 12:25:33 · 615 阅读 · 0 评论 -
快速排序的递归解法(C++实现)
快速的排序在这里讨论两种常规解法和一种考虑数组中有相同值情况时的简便解法。首先来看常规解法一:参考快速排序—(面试碰到过好几次)。如下图所示,假设要给由4个元素7,13,5,9组成的数组进行排序。最开始的基准数据为数组第一个元素7。首先用一个临时变量tmp来存储基准数据,然后分别从数组的两端扫描整个数组,设两个指示标志:L指向左边的起始位置,R指向右边的末尾位置。首先,从末尾位置开始,如...原创 2020-03-16 20:38:30 · 1405 阅读 · 0 评论 -
指针、数组与字符串知识点整理
1.结构体嵌套时的sizeof运算写出下面各结构体的sizeof计算结构:struct s1 {char a[4];};struct s2 {s1 a;char b;};结构体s1所占用的空间为4个字节。结构体s2的第一个成员a占用4个空间,第二个成员b占用1个空间,而结构体s1类型中占用空间最大的类型为char类型,是1个字节,因此结构体s2的sizeof运算结果只要是1的整...原创 2020-03-15 17:24:47 · 521 阅读 · 0 评论 -
如何追踪fp的系统调用过程
为了能够分析fp从用户态到内核态在整个操作系统中的调用流程,可以通过strace这个命令来进行分析。首先,写出一个使用标准库函数对文件进行读写操作的程序:#include <stdio.h>#include <string.h>#define FILENAME ("/home/tl/UNIX-programme/self-practice/file.txt")#d...原创 2020-03-10 17:23:36 · 295 阅读 · 0 评论 -
嵌入式笔试面试问题积累
1.高级IO和低级IO的区别?2.fp从用户态到内核态在整个操作系统中的调用流程3.pcb,tcb,资源分配,栈共享实现4.手写cas5.程序为什么从main函数开始,谁调用的,没有操作系统又是谁调用的6.写一个管道通信的例子7.用过什么面向对象的知识,举例说明8.介绍ARM体系9.指令集哪几种,流水线工作方式,为什么流水线好?10.中断机制,有哪些中断种类,怎么中断,为什么会有...原创 2020-03-13 21:25:40 · 789 阅读 · 0 评论 -
嵌入式笔试面试题整理
XX研究所:说一下静态库和动态库的优缺点在windows中静态库是以.lib为后缀的文件,共享库是以.dll为后缀的文件。在Linux中静态库是以.a为后缀的文件,共享库是以.so为后缀的文件。以linux下的静态库和动态库为例我们研究一下,首先我们看一下他们的生成方式静态库:首先将源文件编译成目标文件:gcc –c a.c b.c生成静态库:ar –rc libstatic.a a...原创 2019-10-27 17:31:03 · 861 阅读 · 0 评论 -
Bootloader和Linux启动过程总结
ARM Linux启动过程分析是本文要介绍的内容,嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例,详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。1、引 言Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1...转载 2019-09-07 08:57:17 · 363 阅读 · 0 评论