自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 python调用DLL报错:[WinError 193] %1 不是有效的 Win32 应用程序解决办法

VS生成的DLL文件是32位的,而大家安装的python版本多半是64位的,调用时会出现此问题。看到之前的解决办法是配置32位的python环境,这种方法我没试过,改环境有时候容易出问题。建议重新生成解决方法---realse+x64,将新生成的DLL文件添加入python项目文件夹中,重新运行即可。...

2020-07-28 14:20:30 2564 1

原创 牛客网刷题8(python)

51.给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。思路:B[0] = A[1] * A[2] * A[3] * A[4] *....*A[n-1] ;(没有A[0])B[1 ]= A[0] * A[2] * A[3] * A[4]...

2019-08-02 17:25:51 341

原创 牛客网刷题7(python)

36.输入两个链表,找出它们的第一个公共结点。思路 :建立一个list列表。遍历第一个链表,将其结点值保存在新建列表。同时遍历第二个链表,判断,若链表2中存在结点值属于新建列表,则返回;否则,结点指向下一个值,继续遍历。class ListNode: def __init__(self, x): self.val = x self.next = N...

2019-07-28 20:34:06 377

原创 牛客网刷题6(python)

31.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。代码如下:class Solution: def Number...

2019-07-24 14:07:22 242

原创 牛客网刷题5(python)

26.输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。递归实现:解题思路:1.将左子树构造成双链表,并返回链表头节点。2.定位至左子树双链表最后一个节点。3.如果左子树链表不为空的话,将当前root追加到左子树链表。4.将右子树构造成双链表,并返回链表头节点。5.如果右子树链表不为空的话,将该链表追加到r...

2019-07-09 17:09:26 272

原创 牛客网刷题4(python)

16.输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调递增规则。方法1:利用循环,代码如下。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Soluti...

2019-07-06 11:55:44 293

原创 牛客网刷题3(python)

11.输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都...

2019-06-23 08:51:31 313

原创 牛客网刷题2(python)

6.用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:栈是后进先出,在栈顶进行元素的插入删除;队列是后进后出,且仅在队尾插入元素,在队头删除元素。考虑将两个栈底部对底部并拢放置,在栈1进行插入元素的操作 ,在栈2进行删除元素的操作。class Solution: def __init__(self): self.stack1...

2019-06-21 10:16:45 320

原创 牛客网刷题1(python)

1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:判断数组中是否有该整数,因此返回值为false或true。定义查询函数Find(),使用循环判断输入的整数是否在array中,设置flag位,若含有则返回true,否则返回false。/*...

2019-06-18 21:48:21 629

原创 计算机网络基本知识5

1.TCP/IP各层描述应用层应用层的通信处于两个进程之间,进程到进程的通信就是应用层的任务。Internet的应用层包含了很多预定义的协议,包括超级文本传输协议(HTTP),该协议是访问万维网的载体。简单邮件传输协议(SMTP)是电子邮件服务的主要协议。文件传输协议(FTP)用于将文件从一台主机传输到另一台主机。远程登录(Terminal Network)和安全外壳(Secure S...

2019-06-18 15:50:45 464

原创 归并排序的非递归实现

归并排序大量引用了递归,尽管在代码上比较清晰,易于理解,但是会造成时间和空间上的性能损耗。考虑将递归转化成迭代。/* 对顺序表L作归并非递归排序 */void MergeSort2(SqList *L){ int* TR=(int* )malloc(L->length*sizeof(int) ) //申请额外空间 int k =1; while(k<...

2019-06-17 14:51:05 409

原创 快速排序算法

1.快速排序算法快速排序算法由图灵奖获得者Tony Hoare设计出来,被列为20世纪十大算法之一。快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。假设现在需要对数组{50,10,90,30,70,40,80,60,20}进行排序,则代...

2019-06-17 10:52:54 214

原创 归并排序算法

归并排序(Merging Sort)就是利用归并的思想实现的排序算法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2]个长度为2或1的有序子序列;再两两归并,...,如此重复,直到得到一个长度为n的有序序列为止。这种排序方法称为2路归并排序。代码如下:/* 对顺序表L作归并排序*/void MergeSort(SqLi...

2019-06-16 19:51:20 213

原创 堆排序

堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆(下图左);或每个结点的值都小于等于其左右孩子结点的值,称为小顶堆(下图右)。这里需要从堆的定义可知,根结点一定是堆中所有结点最大(小)值。如果按照层序遍历的方式给结点从1开始编号,则结点之间满足如下关系:1.堆排序算法堆排序(Heap Sort)就是利用堆进行排序的方法。它的基本思想是,将...

2019-06-15 15:47:47 159

原创 希尔排序算法

希尔排序的代码如下:/* 对顺序表L作希尔排序 */void ShellSort(SqList *L){ int i,j; int increment = L->length; do { increment = increment/3+1; //增量序列 for(i=increment+1; i<=L->...

2019-06-13 20:38:33 1282

原创 直接插入排序算法

直接插入排序算法的基本操作是将一个记录表插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。/* 直接插入排序 */void InsertSort(SqList *L){ int i,j; for(i=2;i<=L->length;i++) { if (L->r[i]<L->r[i-1]) //需将L-...

2019-06-12 21:52:55 996

原创 简单选择排序

简单选择排序(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。代码如下:/* 简单选择排序 */void SelectSort(SqList *L){ int i,j,min; for(i=1;i<L->length;i++) { min = ...

2019-06-12 19:33:43 248

原创 排序算法之冒泡排序

在讲排序算法之前,先提供一个顺序表结构。#define MAXSIZE 10 //用于要排序数组个数最大值,可修改typedef struct{ int r[MAXSIZE+1]; //存储要排序数组,r[0]用作哨兵或临时变量 int length; //记录顺序表的长度}SqList;定义一个函数swap:void swap(SqList *L, ...

2019-06-12 16:40:36 192

原创 散列表查找实现

1.散列表查找算法实现首先是需要定义一个散列表的结构和一些相关的函数。其中HashTable就是散列表结构,结构当中的elem为一个动态数组。#define SUCCESS 1#define UNSUCCESS 0#define HASHSIZE 12 //定义散列表长为数组的长度#define NULLKEY -32768typedef struct { int ...

2019-06-12 09:47:43 1291

原创 平衡二叉树(AVL树)

平衡二叉树是一种二叉排序树,其中每一个节点的左子树和右子树的高度至多等于1。平衡因子:将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子(Balance Factor)。距离插入结点最近的,且平衡因子的绝对值大于1的结点为根的子树,我们称为最小不平衡子树。如下图所示:1.平衡二叉树实现原理平衡二叉树构建的基本思想就是在构建二叉排序树的过程中,每当插入一个结点时,先检查是否...

2019-06-11 16:30:48 356

原创 二叉排序树

二叉排序树(Binary sort tree),又称二叉查找树。它或者是一颗空树,或者是具有下列性质的二叉树:1.若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值2.若它的右子树不空,则右子树上所有结点的值均大于它的根结构的值3.它的左、右子树也分别为二叉排序树二叉排序树的结点间满足一定的次序关系,左子树结点一定比其双亲结点小,右子树结点一定比其双亲结点大。1.二叉...

2019-06-10 23:03:51 146

原创 线性索引查找

数据结构的最终目的是提高数据的处理速度,索引是为了加快查找速度而设计的一种数据结构。索引就是把一个关键字与它对应的记录相关联的过程。 一个索引由若干个索引项构成,每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息。所谓线性索引就是将索引项集合组织为线性结构,线性索引又分为:稠密索引、分块索引和倒排索引等。1.稠密索引稠密索引是指在线性索引中,将数据集中的每个记录对应一个索引...

2019-06-10 13:11:47 299

原创 有序表查找

1.二分查找二分查找又叫折半查找,它的前提是线性表中的记录必须是关键码有序(通常从小到大有序,线性表必须采用顺序存储)。假设有一个有序表数组{0,1,16,24,35,47,59,62,73,88,99},共10个数字,对其进行查找是否存在62这个数。/* 二分查找 */int Binary_Search(int *a, int n, int Key){ int low,...

2019-06-10 09:30:09 491

原创 顺序表查找算法

顺序查找又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个或最后一个记录开始,逐个进行关键字和给定值的比较,若某个记录的关键字和给定值相等则查找成功。顺序查找的实现算法如下:/* 顺序查找,a为数组,n为要查找的数组个数,key为要查找的关键字 */int Sequential_Search(int *a, int n, int Key){ int i; ...

2019-06-09 19:20:49 2315

原创 遍历线索二叉树

对线索二叉树进行遍历时,其实就是操作一个双向链表结构。遍历代码如下:/* T指向头结点,头结点左链lchild指向根结点,头结点右链rchild指向中序遍历的*//* 最后一个结点。中序遍历二叉线索链表表示的二叉树T */Status InOrderTraverse_Thr(BiThrTree T){ BiThrTree p; p = T->lchild...

2019-06-04 22:14:14 1759

原创 线索二叉树

在二叉链表中,我们只知道每个结点指向其左右孩子结点的地址,而不知道每个结点的前驱后继。要想知道,必须遍历一次。为了避免这种情况,我们可以创建指向前驱和后继的指针。这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就被称为线索二叉树。可以看出,其实线索二叉树等于是把一颗二叉树转变成了一个双向链表。然而这样又存在着问题,无法区分某一结点的lchild是指向它的左...

2019-06-04 21:32:34 192

原创 二叉树的建立

如果要在内存中建立一个左图这样的树,为了能让每个结点确认是否有左右孩子,对其进行扩展,成为右图的样子。将二叉树中每个结点的空指针引出一个虚结点,其值为一个定值,比如“#”。这种处理后的二叉树为原二叉树的扩展二叉树。实现算法如下所示:/* 按前序输入二叉树中结点的值 *//* #表示空树,构造二叉链表表示二叉树T */void CreateBiTree(BiTree *T){ ...

2019-06-04 19:45:56 218

原创 二叉树遍历算法

二叉树的定义是采用递归的方式,因此,遍历算法也可以采用递归。1.前序遍历算法代码如下:/* 二叉树的前序遍历递归算法 */void PreOrderTraverse(BiTree T){ if(T == NULL) return; printf("%c", T->data); //显示结点数据,可以更改为其他对结点操作 PreOrde...

2019-06-04 10:10:58 135

原创 二叉树的遍历

二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点仅被访问一次。这里有两个关键词,访问和次序。二叉树的遍历方法分为四种:1.前序遍历规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。如下图所示,遍历的顺序为:ABDGHCEIF2.中序遍历规则是若树为空,则空...

2019-06-03 21:52:44 116

原创 二叉树的存储结构

二叉树顺序存储结构二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系,比如双亲和孩子的关系,左右兄弟的关系等。一颗完全二叉树如下图所示:将这颗二叉树存入到数组中,相应的下标对应其同意的位置,如图所示:值得注意的是 ,顺序结构一般只用于完全二叉树。二叉链表二叉树每个结点最多有两个孩子,所以为它设计一个数...

2019-06-03 20:38:27 171

原创 KMP模式匹配算法

算法原理:KMP模式匹配算法的思想是减少主串S下标i值的回溯,确定字串T下标j值的变化。next数组值推导:KMP模式匹配算法的代码如下:/* 通过计算返回子串T的next数组 */void get_next(String T, int *next){ int i,j; i = 1; j = 0; next[1] = 0; ...

2019-06-03 14:10:37 185

原创 串的朴素模式匹配算法

假设主串S为“goodgoole”,子串为“google”。简单的说,对主串的每一个字符作为子串开头,与要匹配的字符串进行匹配。对主串作大循环,每个字符开头作T的小循环,直到匹配成功或者遍历完为止。假设S和T的长度分别存与S[0]以及T[0]中。/* 返回子串T在主串S中第pos个字符之后的位置。若不存在,则函数返回值为0 *//* T非空,1≤pos≤StrLength(S) */...

2019-06-03 09:38:31 970

原创 串的存储结构

串的存储结构与线性表相同,分为两种。1.串的顺序存储结构串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。一般是用定长数值来定义。对于串的顺序存储,串值的存储空间可在程序执行过程中动态分配而得。比如在计算机中存在一个自由存储区,叫做“堆”,这个堆可有C语言的动态分配函数malloc()以及free()来管理。...

2019-06-02 22:03:26 3185

原创 串的Index算法

代码如下:/* T为非空串。若主串S中第pos个字符之后存在与T相等的字串,则返回第一个这样的字串在S中的位置,否则返回0 */int Index( String S, String T, int pos){ int n,m,i; String sub; if(pos>0) { n = StrLength(S); //得到主串长度...

2019-06-02 21:27:53 3201 2

原创 队列的链式存储结构及实现

队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,称之为链队列。为了操作上的方便,我们将队头指针指向链队列的头结点,将队尾指针指向终端结点,如下图所示:空队列时,头尾指针都指向头结点,如下图所示:链队列的结构为:typedef int QElemType; /* QElemType 类型根据实际情况而定 */typedef struct QNode...

2019-06-02 20:40:52 1331

原创 循环队列

循环队列的顺序存储结构如下:/* */typedef int QElemType;/* 循环队列的顺序存储结构 */typedef struct{ QElemType data[MAXSIZE]; int front; //头指针 int rear; //尾指针 }SqQueue;循环队列的初始化代码如下:/...

2019-06-01 16:23:56 254

原创 栈的链式存储结构及实现

栈的链式存储结构,简称为链栈,如图所示:对于链栈来说,基本不存在栈满的情况,除非内存以没有存储空间。链栈的结构代码如下:typedef struct StackNode{ SElemType data; struct StackNode *next;}StackNode, *LinkStackPtr;typedef struct LinkStack{...

2019-05-31 19:20:57 353

原创 栈共享空间

两栈共享空间的结构的代码如下:typedef struct{ SElemType data[MAXSIZE]; int top1; //栈1栈顶指针 int top2; //栈2栈顶指针}SqDoubleStack;对于两栈共享空间的push方法,我们除了要插入元素值共享参数外,还需要有一个判断是栈1还是栈2的栈号参数stackNumber,插入元素的代码如...

2019-05-31 11:04:57 184

原创 栈的顺序存储结构及实现

栈是线性表的特例,栈只在栈顶进行插入及删除操作,因此数据是后进先出。栈的顺序存储其实也是线性表顺序存储的简化。栈的结构定义如下:typedef int SElemType;typedef Struct{ SElemType data[MAXSIZE]; int top; //栈顶指针}SqStack;进栈操作push,其代码如下:/*插入元素e为...

2019-05-30 21:03:11 277

原创 静态链表

用数组描述的链表叫做静态链表,这种描述方法还有起名叫做游标实现法。如下图所示: 图 1...

2019-05-29 21:49:34 151

Matlab: rpnp

包含rpnp以及epnp算法的matlab程序,通过求取特征点旋转矩阵以及平移向量以获取摄像机的位姿信息。

2019-02-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除