香橙派One(全志H3芯片)编译烧写U-boot、Linux内核zImage、dtb 香橙派提供了u-boot源码和交叉编译链工具:(1)u-boot(2020.04)下载地址:https://github.com/orangepi-xunlong/u-boot-orangepi(2)交叉编译工具链(arm-linux-gnueabihf-)下载地址:https://github.com/orangepi-xunlong/toolchain。
一维动态规划排列数和组合数区别(基于零钱兑换和爬楼梯题目) 针对动态规划求方案数的题目,有两种题目容易混淆:题目一:零钱兑换II(https://leetcode-cn.com/problems/coin-change-2/)题目二:爬楼梯问题(https://leetcode-cn.com/problems/climbing-stairs/)题目二中,通过分析,可以得知子问题是最后一步是通过跨两个台阶,还是一个台阶上来的。所以动态转移方程为:dp[i] = dp[i-1] + dp[i-2]一、注意:以下是错误思路:通过题目二,我们可以推断出题
力扣刷题记录——经典TOPK问题的两种解法(以剑指offerⅡ 40为例) 参考网址:[1] https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/solution/tu-jie-top-k-wen-ti-de-liang-chong-jie-fa-you-lie-/[2]题目网址:https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/
C/C++是否支持动态数组(VLA) 一、先说结论:1.1.支不支持看哪个语言版本,C99和C++11及其之后的版本都是支持的。C99之前不支持。2.2.但是,C99和C++11即便是支持,VLA也必须是局部变量,不能是全局变量二、解释2.1 针对1.1的解释:直接上代码:不管是C++11还是C99,下面这么写都可以运行。#include<stdio.h>#include<stdlib.h>void VLA(int len){ int f[len]; printf("VLA is
归并排序在计算逆序对中的应用 题目描述:解题思路一、暴力求解思路:两层for循环对数组挨个进行判断,这里不再展示代码,时间复杂度为N²二、归并排序思想归并排序采用了分而治之的思想,把数组分成左右两部,让左右两边都有序,接着再merge即可,具体原理不再解释,直接上代码#include<stdlib.h>#include<stdio.h>int merge(int* arr, int* res,int left,int mid,int right){ int number=0;
int a[n]与int* a=(int*)malloc(sizeof(int)*n)的区别与联系 一、回忆一下数组与指针之间的关系1.1定义与初始化1.数组进行定义时,可以不进行初始化,例如直接定义int a[5];,可以将a直接作为函数的实参传入函数运算中。2.指针进行定义时,若要使用指针,比如说当作实参传入函数,必须进行初始化(即指向某一个位置),否则编译器会报错。3.数组的名字是整个数组的首地址,指向数组第一个元素所在的地址2.2相互使用二、int a[10] 和 int *a = malloc(10 * sizeof(int))的区别与联系联系int a[10] 和 int *
STM32的GPS数据提取程序设计说明——基于NMEA0183协议 一、硬软件平台本次程序实现效果为对GPS信号穿送来的数据进行筛选,并将筛选后的信息通过上位机显示出来,所以此次设计所需硬件包括STM32F407、RS232转TTL、CH340USB转串口模块,注意该模块在使用前,对应的系统需要安装驱动,否则串口调试助手无法识别,另外还包括JLink下载器。本次代码设计软件为KEIL5并结合F4固件包,上位机系统为WIN7,主机系统为WIN10。二、算法总体思路设计由于GPS通过RS232将数据传送给板子,因此使用两个串口资源(串口1和串口2),其中一个用来
小白学数据结构与算法(7)——排序 常见的七种排序算法首先定义一下排序的结构和交换函数,这里排序的对象结构为数组#define MAXSIZE 10 //定义要排序的数组长度的最大值typedef struct { int r[MAXSIZE+1];// int length;//当前数组的长度}Sqlist;由于排序中经常用到交换函数,所以定义一下交换函数void swap(Sqlist* L, int i, int j){ int temp; temp=L->r[i]; L->r[i]=L->
小白学数据结构与算法(6)——查找 1.概念查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(记录),若表中存在,则称为查找成功;若不存在,则查找不成功,返回空数据或空指针查找表:同一类型的数据元素(或记录)构成的集合关键字:数据元素中某个数据项的值,又叫键值主关键字:可以唯一地标识一个数据(或记录)的关键字1.1 静态查找表——查找表只有查找操作1.2 动态查找表——在查找过程中,同时对查找表进行插入或删除操作2.顺序表查找顺序查找又叫线性查找,表中数据没有排列数据,从第一个数据(或最后一个数据)开始,
入门小白学数据结构与算法(5)——图 图——多对多的数据关系1.概念1.1基本概念1.图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V, E),G表示为一个图,V是图G中所有顶点的集合,E是图G中所有边的集合2.图中的数据元素叫做顶点,树的叫做节点,线性表叫做元素3.任意两个顶点之间都有可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的,但是顶点的集合不可以为空1.2其他概念1.无向边:顶点Vi到Vj之间的边没有方向。用无序偶对(Vi,Vj)或者(Vj,Vi)来表示2.有向边(弧):顶点Vi到Vj之间的边有
Visual Studio下C语言小细节(3)——使用scanf_s循环输入字符 scanf_s函数用法介绍1.scanf_s是scanf的进化版,比scanf更加安全,它在使用时,加了一个输入变量长度的限制符,当输入一个字符时,我们可以使用char c;scanf_s("%c",&c,1);上述用法中,%c是格式限定符,后面的1是限制要赋值给字符变量c的长度,起到限定取值长度的作用,也就是说,即使我输入的是ABCD,那么最终赋值给c的只是A。但是,也正是因为%c的关系,它除了会读取字符之外,还会读取空白,啥是空白呢,也就是换行符,制表符和空白2.下面,对字符输入的
入门小白学数据结构与算法(4)——树 树——“一对多”的数据关系1.概念1.结点的度:结点拥有的子树数。度为0的结点称为叶结点或终端结点,不为0的称为分支节点,除根节点外,分支节点也称为内部结点。2.树的度:树内各节点的度的最大值。注意:1.树的关系是一对多,之前研究的线性表是一对一,不要混淆2.当树的结点数n>0时,有且只有一个根节点3.子数个数m>0时,子树的数目没有限制,但每个子树之间必须是不相交,若有相交,则不符合树的定义2.相关代码操作树的结构代码——双亲表示法#define MAX_TREE_SIZE
入门小白学数据结构与算法(3)——栈和队列 一、 栈——一种数据遵从“后进先出”的线性表1.1 基本概念:1.仅限定在表尾(栈顶)进行插入和删除操作2.把允许插入和删除的一端(表尾)称为栈顶,另一端叫做栈底,不含任何元素的叫做空栈3.先进的数据放在底,栈的插入又叫入栈,栈的删除叫做出栈。理解:其实栈就是一种特殊的线性表(顺序表,链表),只是数据的操作只允许在表尾(栈顶)1.2 存储结构分为顺序存储和链式存储,常用的为顺序存储1.3栈的相关代码操作——栈顶栈底指针形式栈的定义typedef int Elemtype;typedef
C语言小细节(2)——对迭代与递归的理解 递归定义:函数自己调用自己来实现循环理解:递归实际上不断地深层调用函数,直到函数有返回才会逐层的返回,递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,因此,递归涉及到运行时的堆栈开销(参数必须压入堆栈保存,直到该层函数调用返回为止),所以有可能导致堆栈溢出的错误。例如:if else 调用自己,并在合适时机退出迭代定义:利用变量的原值推出新值称为迭代,或着说迭代是函数内某段代码实现循环理解: 迭代大部分时候需要人为的对问题进行剖析,分析问题的规律所在,将问题转变为一次次的迭代来逼近答案。
入门小白学数据结构与算法(2)——线性表 数据结构与算法(2)——线性表概念:由零个或多个数据元素组成的有限序列注意:1.序列性,元素间有先来后到2.第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继3.线性表是有限的4.线性表元素的个数n定义为线性表的长度,当n=0时,称为空表操作1.InitList(*L):初始化线性表,建立一个新的空的线性链表2.ListEmpty(L):判断线性表是否为空表,若是则返回true,否则返回false3.ClearList(*L):清空线性表4.GetElem(L, i,
C语言小细节(1)——用指针实现函数形参改变实参 用指针实现函数形参改变实参在普通情况下,定义一个带有形参的子函数之后,当调用函数调用该子函数时,实参的值只是复制给形参,再参与子函数里面的数值运算,但原实参的值并不会改变,举个栗子#include <stdio.h>void interchange(int u, int v){ int temp; temp=u; u=v; v=temp;}void main(){ int x=5, y=10; printf("x=%d,y=%d",x,y);//此时系统输出x=5
入门小白学数据结构与算法(1)——基本概念 数据结构与算法——基本概念数据结构:分为逻辑机构与物理结构逻辑结构:数据对象中数据之间的相互关系,分为四个:集合结构:只是同属于一个集合,数据之间没有关系线性结构:数据之间是一对一的关系树形结构:数据之间存在一对多的关系图形结构:多对多的关系物理结构:顺序存储和链式存储顺序存储:数据存放在地址连续的存储单元里,数据间的逻辑关系和物理关系是一致的,例如数组链式存储:地址连续也可不连续,每个元素都会另外存放一个指针,这个指针指向下一个数据的地址时间复杂度与空间复杂度:指程序运