1 aaaaaries

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 27w+

数据结构--哈夫曼树与哈夫曼编码

哈夫曼树什么是哈夫曼树哈夫曼树是一类带权路径长度最短的二叉树,中文名叫哈(郝)夫曼树或最优二叉树。相关概念:1.结点的路径长度:从根结点到该结点的路径上分支的数目。2.树的路径长度:树中每个结点的路径长度之和。3.树的带权路径长度:树中所有叶子结点的带权路径长度之和。如何构建哈夫曼树我们拥有不同的数出现的次数,也就是权值,哈夫曼树也是一颗二叉树,我们将所有权值按照从小到大的顺序...

2020-05-02 18:27:14

数据结构--树(总结)

树树是一种非线性结构树的定义有且只有一个称为根的节点有若干个互不相交的子树,这些子树本身也是一颗树深度:从根节点到最底层节点的层数称之为深度 根节点是第一层叶子节点:没有子节点的节点非终端节点:实际就是非叶子节点** 度**:子节点的个数称为度树的分类一般树:任何一个节点的子节点的个数都不受限制二叉树:任意一个子节点的个数最多两个,且子节点的位置不可更改1....

2020-04-27 00:54:19

数据结构--字符串匹配算法(BF,KMP)

什么是字符串匹配两个字符串A和B,判断B是否是A的字串,并返回B再A中第一次出现的位置 如下图返回3没有匹配的 返回0BF我们很容易想出一种简单粗暴的方式,就是从主串开始,把字符串A和字符串B的字符逐个比较 如果出现不相同的 如第一个图片把字符串B向后移动一位,从字符串A的第二位开始,把字符串A和字符串B的字符逐个比较总结来说 我们可以i,j来分别记录字符再字符...

2020-04-19 03:19:57

数据结构--串

串串其实就是字符串,在c语言中头文件 #include<string.h> 就包含了对其的大部分操作大话数据结构上列出了对串的一些基本函数操作,将字符数组的第一个位置存储为整个字符串的长度,但我没有那么写,而是按一般思维就直接将字符串直接存入数组代码实现#include<stdio.h>#include<stdlib.h>#define MA...

2020-04-18 18:49:57

数据结构--队列(循环,链式)

队列的定义队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表队列是一种先进先出的线性表(FIFO)允许插入的一端称为队尾,允许删除的一端称为队头线性表有顺序存储和链式存储,队列作为一种特殊的线性表,也同样存在这两种存储方式循环队列队列顺序存储有很多不足,我们用两个指针对位置进行标记,front指向第一个元素的位置,rear指向最后一个元素的下一个位置我们添加元素时,...

2020-04-11 21:04:00

数据结构--递归(斐波那契,阶乘,累加,汉诺塔)

递归的定义我们把一个直接调用自己或通过一系列调用语句间接的调用自己的函数,称做递归函数递归满足三个条件1.递归必须得有一个明确的中止条件2.该函数所处理递归程序斐波那契数列在这里插入代码片求1-100的累加和在这里插入代码片汉诺塔在这里插入代码片...

2020-04-11 17:35:30

数据结构--栈(顺序、链表)

栈的定义栈是限定仅在表尾进行插入和删除操作的线性表把允许插入和删除的一端称为栈顶(top)另一端称为栈底(bottom)不含任何元素的栈称为空栈,是先进先出的线性表(LIFO结构)栈的插入(pop)操作,叫做进栈,也叫压栈,入栈。栈的删除(push)操作,叫做出栈,也叫弹栈。栈的顺序存储结构在这里插入代码片栈的链式存储结构在这里插入代码片...

2020-04-11 16:36:30

数据结构--c语言链表(单向、循环、双向)

链表的定义n个节点离散分配 彼此通过指针相连每个节点只有一个前驱节点 每个节点只有一个后驱节点(单链表)首节点没有前驱节点 尾节点没有后驱节点注意了解首节点,尾节点,头结点,头指针,尾指针各个术语的含义头指针:头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头结点的指针头指针具有标识作用,所以常用头指针冠以链表的名字无论链表是否为空,头指针均不为空,头指针是链表...

2020-04-09 07:33:38

HDU--1863(c语言)

题目Kruskal 构建最小生成树#include<stdio.h>#include<string.h>//方便排序创建一个结构体储存边的关系 struct edge{ int u; int v; int w;};struct edge e[10005];//e的大小比m大 int n,m;int f[10005]={0},sum,count;//...

2020-03-03 23:53:15

大数运算--减法

引言由于整型数的位数有限,因此整型数不能满足大整数(超长整数)的运算要求 。大整数计算是利用字符串来表示大整数,即用字符串的一位字符表示大整数的一位数值,然后根据四则运算规则实现大整数的四则运算。思想既然是减法就有可能出现较小的一个数减较大的一个数为负数的情况,那我们就用k标记一下,如果减数比被减数小,就k=1,不是则k=0,如果是k==1,则对结果进行处理但不管哪个比较大,我们都用较大...

2020-03-01 12:24:53

大数运算--加法

引言由于整型数的位数有限,因此整型数不能满足大整数(超长整数)的运算要求 ,大整数计算是利用字符串来表示大整数,即用字符串的一位字符表示大整数的一位数值,然后根据四则运算规则实现大整数的四则运算思想1.先用两个字符数组来存储输入的大数2.我们可以确定结果的位数一定不会比输入的最大位数的大数的位数+1还要多3.根据数组存储数据的特性,比如一个8位数,个位数在num[7]的位置,所以我们要进...

2020-02-29 23:00:57

并查集(擒贼先擒王)

引入并查集也被称为不相交集数据结构我们来从一个例题说起有若干个强盗 有若干个线索,每个线索中的两个强盗为同伙(倘若A与B是同伙,B与C是同伙,那么A与C也是同伙),判断有多少个独立的犯罪团伙。样例数据:10 9 //10个强盗 9条线索1 23 45 24 62 68 79 71 62 4分析1.我们可以先确定一个数组,把每个强盗的首领存放在数组里,...

2020-02-29 14:57:41

树的应用-堆(优先队列&堆排序)

树的介绍数和无向图很相像,但是树是没有回路的。因为树不包含回路这个特点,就被赋予了很多特性1.一棵树中的任意两个结点有且仅有唯一的一条路径连通2.一棵树中如果有n个结点,那么它一定恰好有n-1条边3.在一棵树中加一条边将会构成一个回路只要没有回路的连通无向图就是树同一棵树可以有多个形态,是因为把不同的点当成根结点的原因理解根结点,叶结点,父结点,子结点的定义二叉树二叉树是...

2020-02-28 22:54:00

c++的sort排序模板

简述头文件:#include using namespace std;对数组排序数组名为a共有n个数sort(a,a+n);此方法默认升序排如果要降序排,则要定义一个cmp函数bool cmp(int a,int b){ return a>b;}......sort(a,a+n,cmp);对结构体排序要根据自己想要的写cmp函数举个栗子...

2020-02-22 11:11:26

最短路径--Bellman-Ford的队列优化

简单介绍上一篇提到了Bellman-Ford算法的另一种优化:每次仅对最短路程发生变化了的点的相邻边执行松弛操作这一篇将用队列存储点,大致算法如下讲解用一个例子来详细说明1号顶点为源点,用dis数组存储1号顶点到其余各个顶点的最短路径,初始时dis[1]=0,其余为∞,队列用一个数组que和head、tail指向队首和队尾初始时将源点加入队列,每次从队首取出一个顶点,并对...

2020-02-18 22:39:04

最短路径--Bellman-Ford

简单介绍这是一个无论从思想上还是代码实现上都堪称完美的最短路算法只有四行,而且可以解决带负权边的图,即一点到另外一点的距离可以为负是一个单源最短路径 的问题讲解我们先给出核心代码for(k=1;k<=n-1;k++){ for(i=1;i<=m;i++){ if(dis[v[i]]>dis[u[i]]+w[i]) dis[v[i]]=dis[u[i...

2020-02-18 16:16:11

最短路径--Dijkstra

简单介绍指定的一个点(源点)到其余各点的最短路径,也叫做 “单源最短路径”讲解我们可以用二维数组来存储各点间的距离信息,将没有办法直接到达的用无穷大来表示,自己到自己用0来表示,这样我们就得到了图的信息初始值如下:如何求最短路径呢?我们先认为1号点是选定的源点用一个一维数组dis来储存1号顶点到其余各个顶点的初始路程将此时dis数组中的值称为最短路程的“估计值...

2020-02-17 13:29:46

最短路径---Floyd-Warshall

简单介绍这个算法可以用来求一个图中任意两个点的最短路径,也被称为 “多源最短路径” 问题讲解我们可以用二维数组来存储各点间的距离信息,将没有办法直接到达的用无穷大来表示,自己到自己用0来表示,这样我们就得到了图的信息但如何求两点间的最短路径?如图,是储存好的一张图(图有四个点,八条边)从图可以知道,我们并不能从2点直接到1点,但我们可以借助一个中转站,如我们可以先从2点到3...

2020-02-16 18:47:54

二进制枚举算法

为什么使用二进制枚举因为有的时候很难用循环把所有的情况都表示出来,二进制就可以很轻松的解决这个问题讲解结合一道题目来讲解二进制枚举问题描述  从一个大小为n的整数集中选取一些元素,使得它们的和等于给定的值T。每个元素限选一次,不能一个都不选。输入格式  第一行一个正整数n,表示整数集内元素的个数。  第二行n个整数,用空格隔开。  第三行一个整数T,表示要达到的和。输出格...

2020-02-14 12:01:49

dp背包模板(01、完全、多重)

背包模板01背包dp[j]记录当容量为j时的可行取法的最大价值状态转移方程dp[j]=max(dp[j],dp[j-w[i]]+v[i])注意内层循环为逆序#include<stdio.h>int dp[1005];int main() { int T,n,i,j,s,v[1005],w[1005]; scanf("%d", &T);//循环次数 whi...

2020-02-09 17:59:44

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。