![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 92
日常学习笔记。
JessieXu.
这个作者很懒,什么都没留下…
展开
-
KMP算法的实现与理解
KMP算法实现过程及含义理解1. KMP算法的用处在字符串的模式匹配中,朴素算法寻找子串首次出现位置会出现回溯过程,为了降低时间复杂度,引入KMP算法。KMP算法是通过移动模式串来跟主串进行匹配的,因此时间复杂度是线性的,没有回溯的过程。2. KMP算法的实现(1)先附上KMP主算法的代码:int KMP(string s, string t, int pos, int next[]{//s为主串,t为模式串,pos为开始查找位置,next数组保存模式串每个字符失配时应该重新开始的位置//po原创 2020-10-28 12:49:59 · 271 阅读 · 1 评论 -
数据结构之串练习
串的练习题(1)DS串应用—最长重复子串题目描述求串的最长重复子串长度(子串不重叠)。例如:abcaefabcabc的最长重复子串是串abca,长度为4。输入测试次数tt个测试串输出对每个测试串,输出最长重复子串长度,若没有重复子串,输出-1.样例输入3abcaefabcabcszu0123szuszuabcefg样例输出43-1做法一:利用kmp算法,取next数组中的最大值#include <iostream>#include <stri原创 2020-11-24 16:56:49 · 1107 阅读 · 0 评论 -
动态规划求AOE网的关键路径
Problem Description一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示:如上所示,共有11项活动(11条边),9个事件(9个顶点)。整个工程只有一个开始点和一个完成点。即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)。关键路径:是从开始点到完成点的最长路径的长度。路径的长度是边上活动耗费的时间.原创 2020-11-29 15:13:49 · 1252 阅读 · 0 评论 -
数据结构之顺序表练习
计算2支股票的M天运动平均价格题目描述给定2支股票的开盘价和收盘价的N天历史数据,要求按开盘和收盘,分别计算每支股票的每个日期对应的M天移动平均价格。假定两个股票数据如下:日期 开盘/收盘 第1支股票价格S1 第2支股票价格S22004/7/29 close 642004/7/25 close 2 62004/7/26 open 8 122004/7/30 open 2 42004/7/27 close 8 102004原创 2020-12-01 16:57:44 · 464 阅读 · 0 评论 -
数据结构之队列
队列练习题题目描述假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间。输入输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T和事务处理时间P,并且假设输入数据已经按到达时间先后排好了顺序;最后一行给出正整数K(≤10),为开设的营业窗口数。输出原创 2020-12-13 16:42:53 · 103 阅读 · 0 评论 -
数据结构之赫夫曼树
1.赫夫曼树的基本操作赫夫曼树采用线性结构(即数组)存储最为简单,相关的基本操作有:树的构建、字符的编码、字符串的译码。每个结点应该包含的信息有:字符内容、父结点和左右孩子结点的下标、权重以及该字符的编码。struct HFNode{ char ch; int weight; int parent, lChild, rChild; string code; HFNode(){ parent = 0; lChild = 0; rChild = 0; code = "";原创 2021-01-26 19:42:45 · 223 阅读 · 0 评论 -
数据结构之图的最短路径和拓扑排序及应用
一、图的最短路径图的最短路径问题指的是从给定顶点到其余各顶点的最短路径,常用迪杰斯特拉算法求解。例题:DS图—图的最短路径题目描述给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。输入第一行输入t,表示有t个测试实例第二行输入顶点数n和n个顶点信息第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其它结点如果相连则为距离,无连接则为0,数据之间用空格隔开。第四行输入v0,表示求v0到其他顶点的最短路径距离以此类推输入下一个示例输出对原创 2021-01-26 19:43:12 · 513 阅读 · 0 评论 -
数据结构之图练习
一、图的基本存储结构邻接矩阵邻接表这是图的两种基本表示方法,当然还有改进的十字链表、多重邻接矩阵等,在这里就不展开。邻接矩阵适用于稠密图,因为它是以顶点来表示的;邻接表适用于稀疏图,对于边较少的图比较合适。二、图的创建邻接矩阵#include<iostream>#include<string>using namespace std;class Map{ int VertexNum;//顶点数 int ArcNum;//边数 string *Ver原创 2021-01-26 19:43:29 · 289 阅读 · 0 评论 -
数据结构之图的最小生成树以及图的连通性
一、图的最小生成树算法1. Prim算法蛮力法,特点:使用访问数组,三层循环,思路简单,但时间复杂度较高。#define MaxWeight 1000struct Node{//边信息 int v1;//顶点1下标 int v2;//顶点2下标 int weight;};class Map{ int len;//顶点数 string *name;//顶点数组 int **P;//邻接矩阵 int *v;//访问数组 Node *node;//存放边信息public:原创 2021-01-26 19:43:45 · 615 阅读 · 0 评论 -
数据结构之森林转换二叉树
题目描述给定一组森林,编写程序生成对应的二叉树,输出这颗二叉树叶结点对应的二进制编码.规定二叉树的左边由0表示,二叉树的右边由1表示。输入输入:N B 表示N个树,每结点最多B个分支第2行至第N+1行,每个树的先序遍历输出每行表示一个叶结点对应的二进制编码.样例输入3 3A B 0 0 0 C 0 0 0 D 0 0 0E F 0 0 0 0 0G H 0 0 0 I J 0 0 0 0 0 0样例输出0 1 11 01 1 0 1 0.原创 2021-01-26 19:44:01 · 1758 阅读 · 0 评论 -
数据结构之二叉树练习
1.二叉树的结构二叉链表结构:struct BiNode{ char data; BiNode* lChild; BiNode* rChild; BiNode():lChild(NULL),rChild(NULL){}}三叉链表结构struct BiNode{ char data; BiNode* lChild; BiNode* rChild; BiNode* father; BiNode():lChild(NULL),rChild(NULL),father(NULL)原创 2021-01-26 19:44:16 · 675 阅读 · 0 评论