数据结构
X丶
这个作者很懒,什么都没留下…
展开
-
线段树通俗讲解
线段树的详解与应用原创 2021-03-22 12:45:36 · 105 阅读 · 0 评论 -
HUD 5687(字典树)
反思:之前在删除单词的时候,只是删除掉单词前缀以后的字符,而没有把整个单词都删除掉,导致WA了很多次。高手请略过...AC代码:#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<string.h>using namespace std;struct Dic { Dic *nt[26]...原创 2018-12-31 14:08:13 · 140 阅读 · 0 评论 -
线性求[1,P-1]的逆元
设质数P,假设已经知道 [ 1 , a-1 ]的逆元,现在需要求 a的逆元。 inv[1] = 1; for (int i = 2; i < MOD; i++) inv[i] = (MOD - MOD / i) * inv[ MOD % i] % MOD; ...转载 2018-12-22 10:35:13 · 397 阅读 · 2 评论 -
HDU 4826 Labyrinth(DP解法)
Problem Description度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向上向下向右走以前没有走过的格子,每一个格子中都有一些金币(或正或负,有可能遇到强盗拦路抢劫,度度熊身上金币可以为负,需要给强盗写欠条),度度熊刚开始时身上金币数为0,问度度熊走出迷宫时候身...原创 2018-12-21 19:35:36 · 187 阅读 · 0 评论 -
归并排序
例子:初始关键字 [49 38 65 97 76 13 27]分裂后: [49] [38] [65] [97] [76] [13] [27] | | | | | | |第一次归并 [38 49] [65 97] [13 76] [27] ...原创 2018-09-13 20:49:41 · 105 阅读 · 0 评论 -
KMP算法及其优化
先简单说一下KMP的概念:设主串为S,匹配串为T,则栗子Ⅰ 如图:步骤①中 S[1~5]与T[1~5]都匹配,S[6]与T[6]不匹配由T中可得 T[1] ≠ T[2] ≠ T[3] ≠ T[4] ≠ T[5],然而 T[2]=S[2] , T[3]=S[3] , T[4]=S[4] , T[5]=S[5]所以 T[1] ≠ S[1~5] ,即②③④⑤的比较都...原创 2018-09-15 21:59:14 · 3373 阅读 · 1 评论 -
散列表查找(哈希表)
散列函数构造经常要考虑:1.散列表的长度2.关键字的长度3.关键字的分布情况4.计算散列函数所需的时间5.记录的查找频率一个“好”的散列函数应遵循一下两条原则(1)函数计算要简单,每一关键字只能有一个散列地址与之对应(2)函数的值域需在表长范围内,计算出的散列地址的分布应均匀,尽可能减少冲突 构造散列函数的几种常用分析法:数字分析法、平方取中法、折叠法、除留...原创 2018-09-07 19:59:26 · 294 阅读 · 0 评论 -
二叉树由前序中序求后序
#include<iostream>using namespace std;char Pre_order[10];char In_order[10];void getPost(int root, int start, int end) { if (start > end)return; int i = start; while (i <= end&...转载 2018-08-23 21:13:16 · 186 阅读 · 0 评论 -
用链表实现邻接表
#include<iostream>using namespace std;#define maxvex 10struct EdgeNode { int adjvex; //连接的顶点 EdgeNode *next; //指向下一条出边};struct VertexNode { int data; //点的数据 EdgeNode *firstedge...原创 2018-08-26 17:40:07 · 815 阅读 · 0 评论 -
线索二叉树
当我们建立二叉树的时候,会有很多多出来的空指针没有利用好,这就不符合我们勤俭节约的好习惯了例如:其中∧表示的就是空指针 我们可以对其进行线索化,从而达到充分利用好空指针 首先,我们可以使左非空指针指向它的左孩子,右非空指针指向它的右孩子我们可以使左空指针指向它的前驱,右空指针指向它的后继经过某种遍历后会发现,二叉树就会变成一个双向链表其中:虚线箭头指...原创 2018-08-16 21:37:45 · 179 阅读 · 0 评论 -
用链表实现栈
结点 ● {data;next}data:结点数据next:指向结点的下一个结点 思路:●(1)——●(2)——●(3)——●(4) ⬆ 栈顶●(3) = ●(4) ->next#include<iostream&g...原创 2018-08-08 22:20:19 · 148 阅读 · 0 评论 -
用链表生成前序二叉树
介绍一下二叉树的3种遍历方式:前序遍历:先访问根结点,然后每个结点先遍历左孩子,再遍历右孩子中序遍历:先从根结点开始(注意并不是先访问根结点),每个结点先遍历结点的左孩子,再遍历父结点,再遍历右孩子后序遍历:从左到右先孩子再到父亲 我们可以用递归对二叉树进行遍历:(以下几种遍历代码形式十分相似)前序遍历:void TreeTraveler(Node *...原创 2018-08-11 21:12:31 · 397 阅读 · 1 评论