![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
数据结构
Asus.Blogs
这人懒散惯了,什么也没有写
展开
-
C. Where is the Pizza?【并查集】
C. Where is the Pizza?题意:让你求一个排列数组ci在给定条件下有几种可能:给你两个1-n的乱序排列a[],b[],再给你一个n个数的d[i]数组,if di==0: 可以选择ai or bi 填充ci,else: ci = di ,让你求c[]有多少可能思路:其实一开始乱糟糟的没思路,但是模拟一下会发现几个数会组成一个环,而且每一个环的贡献值为2,假设有n个环,那么答案就是2^n;if ai==bi :贡献值为0 因为只有一种可能if di != 0: 贡献值为0 因原创 2022-05-11 22:46:38 · 403 阅读 · 0 评论 -
字符串关键字的散列映射[平方探测法]
L . 案例5-1.4:字符串关键字的散列映射 [ 问题 9295 ] [ 讨论 ]Description给定一系列由大写英文字母组成的字符串关键字和素数 $P$ ,用移位法定义的散列函数$H (Key)$ 将关键字 $Key$ 中的最后3个字符映射为整数,每个字符占5位;再用除留余数法将整数映射到长度为$P$ 的散列表中。例如将字符串AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序映射到整数0~25;再通过移位将其映射为3×32²+4×32+6=3206;然后根据表长得到32原创 2022-03-12 14:55:45 · 2474 阅读 · 0 评论 -
【二叉树】根据后续和中序遍历输出前序遍历 [建树+非建树做法]
F . 案例 4-1.1:根据后续和中序遍历输出前序遍历Description本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。Input第一行给出正整数N (≤30),是树中结点的个数。随后两行,每行给出N 个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。Output在一行中输出Preorder: 以及该树的先序遍历结果。SamplesInput 复制72 3 1 5 7 6 41 2 3 4 5 6 7Outp原创 2022-03-31 17:30:28 · 2193 阅读 · 0 评论 -
最长连续递增子序列
E . 案例3-1.2:最长连续递增子序列 [ 问题 9288 ] [ 讨论 ]Description给定一个顺序存储的线性表,设计算法查找该线性表中最长的连续递增子序列。例如(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8).Input序列长度 n (1≤n≤1e6)序列a1,a2…an (1≤ai≤1e9)Output最长连续递增子序列(若有多个等长最长连续递增子序列,输出位置靠前的)。SamplesInput 复制151 9 2 5 7 3 4 6原创 2022-02-23 22:19:43 · 414 阅读 · 0 评论 -
L2-004 这是二叉搜索树吗? (25 分)
L2-004 这是二叉搜索树吗? (25 分)一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。输出格原创 2022-04-19 23:07:55 · 142 阅读 · 0 评论 -
7-8 浪漫侧影 (25 分)【根据二叉树中序和后续建树】
借用一下dalao的题干输入样例:86 8 7 4 5 1 3 28 5 4 7 6 3 2 1输出样例:R: 1 2 3 4 5L: 1 6 7 8 5根据后续和中序正常建树,然后维护每一层的编号最大值和最小值,左边看就是输出每一层最小的那个节点,右边看就是每一层输出最大的那个节点#include<bits/stdc++.h>using namespace std;const int N=110;int n;int in[N],post[N];int two原创 2022-04-17 16:14:58 · 1419 阅读 · 0 评论 -
整型关键字的散列映射
Description给定一系列整型关键字和素数P,用除留余数法定义的散列函数$H(Key) = Key % P$将关键字映射到长度为P的散列表中。用线性探测法解决冲突。Input输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。Output在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。SamplesInput 复制4 524 15 61 88原创 2022-02-22 22:37:08 · 426 阅读 · 0 评论 -
完全二叉搜索树[模拟建树+判断是否是完全BST树]
L3-010 是否完全二叉搜索树 (30 分)将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。原创 2022-04-18 23:27:07 · 113 阅读 · 0 评论 -
部落【浙大版数据结构】
I . 基础实验4-2.8:部落 [ 问题 9277 ] [ 讨论 ]Description在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。Input输入在第一行给出一个正整数$N$($\le 10^4$),是已知小圈子的个数。随后$N$行,每行按下列格式给出一个小圈子里的人:$K\ P[1]\ P[2]\ \ldots P[K]$其原创 2022-02-22 22:01:39 · 338 阅读 · 1 评论 -
完全二叉(搜索)树层序遍历求解
第一种给你后续遍历求解层序遍历贴上dalao的文章链接第二种给你中序遍历求解层序遍历I . 进阶实验4-3.3:完全二叉搜索树 [ 问题 9307 ] [ 讨论 ]Description一个无重复的非负整数序列,必定对应唯一的一棵形状为完全二叉树的二叉搜索树。本题要求你输出这棵树的层序遍历序列。Input首先第一行给出一个正整数 N (≤1000),随后第二行给出 N 个不重复的非负整数。数字间以空格分隔,所有数字不超过 2000。Output在一行中输出这棵树的层序遍历序列。数字间原创 2022-03-19 22:17:18 · 1435 阅读 · 0 评论 -
L2-001 紧急救援(25分) 带权最短路+路径数量+路径输出+堆优化
L2-001 紧急救援 (25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;D是目的原创 2022-04-11 10:16:04 · 1547 阅读 · 0 评论 -
数据结构实训《表达式求值》
【问题描述】给定一个四则运算的中缀表达式,编程计算表达式的值。基本要求:(1)在给定的表达式中要包含括号;(2)栈的操作要求自己完成,不允许调用类库中的方法;(3)对不同的操作编写相应的函数。【算法思想】算法的核心思想的对四则运算符赋予数字优先级来比较大小,对输入的字符串扫描,将运算符和数字分别压入各自栈中。然后类似与二叉树的后序遍历对表达式进行求值。如果栈顶运算符优先级低,新运算符直接入栈如果栈顶运算符优先级大于等于此时的优先级,先出栈计算,新运算符再入栈如果遇到括号,左括号直接入栈,等原创 2021-12-16 10:02:53 · 2197 阅读 · 0 评论 -
数据结构《插入排序》
关于几种插入排序:直接插入排序,折半插入排序,希尔排序,解释在代码中给出#include<bits/stdc++.h>using namespace std;#define MAXSIZE 20typedef int KeyType;int num[12]={0,3,5,10,16,7,32,89,23,54,29,96};int D[3]={5,3,1};typedef struct {//记录每个数据元素的结构 KeyType key;//关键字 //Other 其.原创 2021-12-12 20:33:13 · 419 阅读 · 0 评论 -
数据结构《二叉排序树》
关于搜索二叉树的建立,插入,删除,寻找最大节点,寻找最小节点,先序遍历,中序遍历,后序遍历等操作,详细解释在代码中给出#include<bits/stdc++.h>using namespace std;#define MAXSIZE 200000#define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemT.原创 2021-11-29 17:18:08 · 94 阅读 · 0 评论 -
数据结构《二叉树》
二叉树的建立,遍历:先序遍历,中序遍历,后序遍历,非递归先序遍历,层序遍历,以及二叉树的复制,总结点和叶子节点数的统计,树的深度的计算…至于栈和队列在更新#include<bits/stdc++.h>using namespace std;#define MAXSIZE 200000#define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0#define INFEASIBLE -1#define OVERFLOW .原创 2021-11-28 18:40:08 · 322 阅读 · 0 评论 -
数据结构《顺序队和链队》
有关顺序队和链队的创建,入队,出队,获取头结点数据,获取队长,判断队列是否为空,遍历队等操作顺序队:#include<bits/stdc++.h>using namespace std;#define MAXSIZE 200000#define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemType; ty.原创 2021-11-27 21:34:13 · 815 阅读 · 0 评论 -
数据结构《顺序栈和链栈》
有关顺序栈和链栈的基本操作:创建栈,入栈,出栈,取栈顶元素,求栈的长度,清空栈,释放栈顺序栈:#include<bits/stdc++.h>using namespace std;#define MAXSIZE 200000#define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemType; typed.原创 2021-11-26 20:43:23 · 325 阅读 · 1 评论 -
数据结构《单链表》
关于单链表的插入,删除,清空,释放,头插,尾插,链表长度,查找等操作#include<bits/stdc++.h>using namespace std;#define MAXSIZE 200000#define TRUE 1#define FALSE 0#define OK 1 #define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemType; typedef int Status;.原创 2021-11-23 21:41:25 · 317 阅读 · 0 评论 -
数据结构《顺序表》
关于顺序表的插入,查询,删除,清空,非递归归并排序,递归归并排序,位移法删除重复元素,查找法删除重复元素等等基本操作代码,以及关于malloc的动态分配内存的解释,重要解释在代码中:/*数据结构 线性表->顺序表的插入,查询,删除,清空*/#include<bits/stdc++.h>using namespace std;#define MAXSIZE 200000#define TRUE 1#define FALSE 0#define OK 1 #define ER.原创 2021-11-22 22:20:38 · 369 阅读 · 2 评论