数据结构与算法
Jcldcdmf
haha
展开
-
扩展欧几里得算法
一、ax+by=gcd(a,b)的求解问题:给定a,b两个整数,求满足ax+by=gcd(a,b)的整数解x、y,其中gcd(a,b)是a和b的最大公约数。int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}在求最大公约数的算法中,当到达递归边界b=0, a=gcd时,有(x1, y1)=(1,0)使ax1+by1=gcd(a,b)成立,假设...原创 2020-01-21 23:31:41 · 270 阅读 · 0 评论 -
选择第n大的数
选择第n大的数借鉴快速排序算法,返回每趟确定的一个元素的位置,与n比较。在快速排序中使用随机生成的枢轴,如果数据排列均匀,也可以选第一个数作为枢轴。//// Created by dgm on 2020/1/3.//#include <iostream>#include <time.h>#include <stdlib.h>using names...原创 2020-01-03 22:48:13 · 257 阅读 · 0 评论 -
41. 缺失的第一个正数
题目描述:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。算法描述://这是从王道的考研数据结构看来的。设置一个与给定数组nums大小相同的记录数组...原创 2019-04-27 08:42:22 · 113 阅读 · 0 评论 -
链式基数排序
将一个关键字,如278,分为三个关键字‘2’,‘7’,‘8’。按照位数从低到高添加到f-e中,其实f和e只是指向头尾两个元素,链表的连接关系实际上是通过修改r的next指针实现的。//// Created by dgm on 19-4-23.//#include <iostream>#define MaxNum 10000#define Radix 10using n...原创 2019-04-23 09:16:10 · 2986 阅读 · 0 评论 -
11. 盛最多水的容器
题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表...原创 2019-04-27 11:04:00 · 132 阅读 · 0 评论 -
477. 汉明距离总和
题目描述两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)所以答案为:HammingDistance(4, 14) + HammingDistance(4, 2) +...原创 2019-04-28 15:07:13 · 316 阅读 · 0 评论 -
归并排序-递归和非递归实现
对于分别有序的两段序列,调用Merge后形成的序列也是有序的,通过“递”不断地将每一个子列拆分为两个子列,拆到最后,形成的两个子列都只有一个元素,这时候两段子列显然是有序的,于是在“归”的过程中,不断地用Merge合并子列,最后形成有序列。递归实现的算法抄的严蔚敏《数据结构》树上的。//// Created by dgm on 19-4-24.//#include <iostr...原创 2019-04-24 09:55:17 · 186 阅读 · 0 评论 -
Dijkstra算法
一、代码//// Created by dgm on 19-4-3.//#include <iostream>using namespace std;#define Maxnum 100#define Infinity 65535typedef int Vertex;typedef int ARType;typedef char* Info;typedef str...原创 2019-05-25 17:49:30 · 166 阅读 · 0 评论 -
1003 Emergency (25 分)
一、题目大意:n个城市以及他们之间的m条路构成了图,每个城市驻有大小不同的救援队,你所在的城市为c1,当c2发生险情时,你需要带领c1城市的救援队按最短路径赶往c2,所经过城市的救援队也会加入你们。输入:n(城市数),m(路数),c1(你所在城市),c2(需要救援的城市);每个城市驻扎救援队数目;m条路的起点、终点、长度。输出:最短路径的数目以及在这些路径中所能集合的救援队最大数目。二、分析...原创 2019-05-26 10:50:45 · 2727 阅读 · 1 评论 -
八皇后问题剪枝算法
已经判明不满足要求的情况不再递归求解,相当于从状态树上把它和它的子树减去了#include <iostream>#include <math.h>#include <cstring>using namespace std;#define n 8void queens(int chess[],int k,int &sum){ //假设前...原创 2019-06-12 15:37:12 · 804 阅读 · 0 评论 -
简单计算器
只能实现正整数的加减乘除表达式为中缀(字符串),变后缀(队列)的规则:1、从前到后取中缀表达式的字符。2、如果是数字直接加入后缀队列。3、如果是运算符:若中缀表达式运算符优先级高于操作符栈顶元素优先级则压入栈中;否则,弹栈直到栈空或栈顶元素优先级不高于中缀表达式运算符;4、若中缀表达式还没有遍历完,重复2,3。5、将运算符栈中剩余元素加入到后缀队列中。#include <i...原创 2019-08-28 19:59:43 · 107 阅读 · 0 评论 -
平衡二叉树(AVL树)
又要去上材料成型,不是说好的校运会不上课吗。注释和图晚上再写,嘿嘿//// Created by dgm on 19-4-10.//#include <iostream>using namespace std;#define LH 1#define EH 0#define RH -1typedef char ElemType;typedef struct Bi...原创 2019-04-12 15:39:39 · 172 阅读 · 0 评论 -
拓扑排序
//// Created by dgm on 19-4-1.//#include <iostream>using namespace std;#define MaxNum 100//use adjacency list to store graphtypedef struct EdgeNode{ //edge int weight; int ad...原创 2019-04-01 14:59:55 · 103 阅读 · 0 评论 -
顺序表
#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;using namespace std;#define MaxSize 1000#define Crement 100typedef int ElemType;typedef struct { ElemType *elem; int length; int listsize;}Sqlist;bool InitL...原创 2019-02-24 11:39:15 · 194 阅读 · 0 评论 -
单链表建立、插入、删除、合并
//// Created by dgm on 19-2-24.////感觉最麻烦的还是指针移动次数// 和元素的匹配,for循环经常搞不清楚//循环i次还是i-1次#include &lt;iostream&gt;using namespace std;typedef char ElemType;typedef struct LNode{ LNode() :ne...原创 2019-02-25 11:02:03 · 718 阅读 · 0 评论 -
线索二叉树和BST
#include&amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;cstring&amp;amp;amp;amp;amp;gt;#define ElemType charusing namespace std;typedef enum{ //枚举?emmm,之前不知道 Li原创 2019-02-20 07:47:59 · 241 阅读 · 0 评论 -
静态链表实现集合运算(A-B)∪(B-A)
用静态链表实现(A-B)∪(B-A)分析可知问题就是把A和B都有的元素从A中删去,把B有而A没有的加到A中,最后得到的A就是结果了//// Created by dgm on 19-2-25.//#include &lt;iostream&gt;using namespace std;#define MAXSIZE 1000typedef char ElemType;typed...原创 2019-02-25 17:25:09 · 2961 阅读 · 0 评论 -
数据结构迷宫问题
转自:https://blog.csdn.net/qq_37414405/article/details/85935033思路:利用栈穷举路径,从而来得到问题的解答注意:当前路径可通,指未曾走到过的通道块(即不能是已经压入栈中的通道块又被重复压入,这样的话就不是简单路径了)。并且该通道块不能是曾经纳入过路径的通道块(即不能之前弹出了又压入进去,这样的话就会在死胡同里转圈)代码如下:#...原创 2019-03-02 14:12:15 · 1621 阅读 · 0 评论 -
1002 A+B for Polynomialsde的链表实现
题目:This time, you are supposed to find A+B where A and B are two polynomials.Input Specification:Each input file contains one test case. Each case occupies 2 lines, and each line contains the infor...原创 2019-02-26 23:22:43 · 174 阅读 · 0 评论 -
矩阵转置和乘法
//// Created by dgm on 19-3-6.//#define MaxSize 10000#define MaxRow 100#define MaxCol 100typedef int ElemType;typedef int Status;#include <iostream>using namespace std;typedef struct T...原创 2019-03-09 18:18:06 · 5353 阅读 · 0 评论 -
哈夫曼树(Huffman Tree)
//// Created by dgm on 19-3-16.//#include <iostream>#include <cstring>using namespace std;typedef struct HNode{ HNode(int w,int p,int l,int r) :weight(w), parent(p), ...原创 2019-03-16 22:30:20 · 399 阅读 · 0 评论 -
深度优先和广度优先
渣渣编程bug多,调来调去一上午//// Created by dgm on 19-3-27.//#include <iostream>using namespace std;typedef int VertexType; //边的长度,本例全部输入1typedef int VRType; //节点编号typedef char* Info; //附加信息...原创 2019-03-27 11:10:02 · 150 阅读 · 0 评论 -
最小生成树Prim算法
可以把最小生成树的生成过程看作是从一个节长成一棵树的过程,在这个过程中存在着两个集合,即已在生成树中的点的集合和还没有加入生成树的点的集合(其余元素),这两个集合之间通过元素之间的边有了联系,每次从其余元素中取元素加入生成树遵循的原则是:使这个元素和生成树之间连线的长度最短(也就是边最短)。 按照这个思想:closedge代表的就是树可能的生长方向,其中closedge[i]表示从closed...原创 2019-03-27 17:02:17 · 309 阅读 · 0 评论 -
链表L->next
刚开始看严蔚敏数据结构,到链表算法2.8,一开始对于p指向链表第一个结点的语句p=L-&amp;gt;next;不是很明白,认为头指针L指向头结点,头结点的下一个结点才是第一个结点,所以应该是p=L-&amp;gt;next-&amp;gt;next。现在明白了,L-&amp;gt;next=(L).next,而L表示取指针L所指的地址的内容(也就是头结点),所以L-&amp;gt;next=(*L).next=头结点.ne原创 2019-02-22 19:02:59 · 17100 阅读 · 32 评论