数据结构
常用数据结构代码
cycy小陈
进一步有一步的欢喜。
展开
-
众数问题
Problem Description给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的由n 个自然数组成的多重集S,计算S的众数及其重数。如果出现多个众数,请输出最小的那个。Input输入数据的第1行是多重集S中元素个数n(n<1300000)...原创 2019-03-11 10:19:13 · 146 阅读 · 0 评论 -
整数因子分解问题
Problem Description大于1的正整数n可以分解为:n=x1*x2*…*xm。例如,当n=12 时,共有8 种不同的分解式:12=12;12=6*2;12=4*3;12=3*4;12=3*2*2;12=2*6;12=2*3*2;12=2*2*3。对于给定的正整数n,计算n共有多少种不同的分解式。Input输入数据只有一行,有1个正整数n ...原创 2019-03-09 13:56:20 · 1072 阅读 · 0 评论 -
顺序表应用7:最大子段和之分治递归法
Problem Description给定n(1<=n<=50000)个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n。 例如,当...原创 2019-03-09 11:20:30 · 130 阅读 · 0 评论 -
数据结构实验之排序五:归并求逆序数
数据结构实验之排序五:归并求逆序数Problem Description对于数列a1,a2,a3…中的任意两个数ai,aj (i aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。原创 2017-12-22 10:39:06 · 231 阅读 · 0 评论 -
数据结构实验之排序七:选课名单
数据结构实验之排序七:选课名单Problem Description随着学校规模的扩大,学生人数急剧增加,选课名单的输出也成为一个繁重的任务,我校目前有在校生3万多名,两千多门课程,请根据给定的学生选课清单输出每门课的选课学生名单。Input输入第一行给出两个正整数N( N ≤ 35000)和M(M ≤ 2000),其中N是全校学生总数,M是课程总数,随原创 2017-12-22 10:07:17 · 232 阅读 · 0 评论 -
数据结构实验之排序四:寻找大富翁
数据结构实验之排序四:寻找大富翁Problem Description2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。Input首先输入两个正整数N( N ≤ 10^6)和M(M ≤ 10),其中N为总人数,M为需要找出的大富翁数目,接下来给出N个人的个人资产,以万原创 2017-12-22 09:52:17 · 259 阅读 · 0 评论 -
数据结构实验之排序六:希尔排序
数据结构实验之排序六:希尔排序Problem Description我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1原创 2017-12-18 19:23:18 · 185 阅读 · 0 评论 -
数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sortProblem Description根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推,大于等于100岁的老人全部按100岁计算。Input 输入第一行给出一个正整数N(O原创 2017-12-18 18:58:28 · 204 阅读 · 0 评论 -
数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序Problem Description冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。Input连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔。原创 2017-12-18 11:49:37 · 197 阅读 · 0 评论 -
数据结构实验之排序一:一趟快排
数据结构实验之排序一:一趟快排Problem Description给定N个长整型范围内的整数,要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。 Input连续输入多组数据,每组输入数据第一行给出正整数N(N Output输出一趟快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。Example原创 2017-12-18 11:18:06 · 226 阅读 · 0 评论 -
数据结构实验之查找七:线性之哈希表
数据结构实验之查找七:线性之哈希表Problem Description根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。Input连续输入多组数据,每组输入数据第一行为两个正整数N(N = N的最小素数),N是关键字总数原创 2017-12-13 16:01:35 · 520 阅读 · 0 评论 -
数据结构实验之查找六:顺序查找
数据结构实验之查找六:顺序查找Problem Description在一个给定的无序序列里,查找与给定关键字相同的元素,若存在则输出找到的元素在序列中的位序和需要进行的比较次数,不存在则输出"No",序列位序从1到n,要求查找从最后一个元素开始,序列中无重复元素。Input连续多组数据输入,每组输入数据第一行首先输入两个整数 n (n Out原创 2017-12-13 15:47:48 · 380 阅读 · 0 评论 -
数据结构实验之查找五:平方之哈希表
数据结构实验之查找五:平方之哈希表Problem Description给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,...,m-1Input输入包含多组测试数据,到 EOF 结束。每组数据的第1行原创 2017-12-13 15:42:42 · 274 阅读 · 0 评论 -
数据结构实验之查找四:二分查找
数据结构实验之查找四:二分查找Problem Description在一个给定的无重复元素的递增序列里,查找与给定关键字相同的元素,若存在则输出找到的位置,不存在输出-1。Input一组输入数据,输入数据第一行首先输入两个正整数n ( n 随后m行输入m个待查找的关键字keyOutput若在给定的序列中能够找到与关键字key相等的原创 2017-12-13 15:25:57 · 198 阅读 · 0 评论 -
数据结构实验之查找三:树的种类统计
数据结构实验之查找三:树的种类统计Problem Description随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。Input输入一组测试数据。数据的第1行给出一个正整数N (n Output按字典序输出各种树的种类名称和它占的百分比,中间以空格间原创 2017-12-13 15:12:57 · 207 阅读 · 0 评论 -
数据结构实验之查找二:平衡二叉树
数据结构实验之查找二:平衡二叉树Problem Description根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根。Input输入一组测试数据。数据的第1行给出一个正整数N(n Output输出平衡二叉树的树根。Example Input588 70 61 96 120Example原创 2017-12-13 14:41:24 · 194 阅读 · 0 评论 -
数据结构实验之查找一:二叉排序树
数据结构实验之查找一:二叉排序树Problem Description对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。Input输入包含若干组测试数原创 2017-12-12 13:35:27 · 212 阅读 · 0 评论 -
数据结构实验之图论十一:AOE网上的关键路径
数据结构实验之图论十一:AOE网上的关键路径Problem Description 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。 AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示:原创 2017-12-03 19:17:14 · 475 阅读 · 1 评论 -
数据结构实验之图论十:判断给定图是否存在合法拓扑序列
数据结构实验之图论十:判断给定图是否存在合法拓扑序列Problem Description 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。Input 输入包含多组,每组格式如下。第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n后面m行每行两个整数a b,表示从a到b有一条有向边。 Output 若给定有原创 2017-12-03 18:44:12 · 365 阅读 · 0 评论 -
数据结构实验之图论九:最小生成树
数据结构实验之图论九:最小生成树Problem Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。第一行包括两个整数n m,代表城市个数和可以修建的公路个数。原创 2017-12-01 21:26:17 · 294 阅读 · 0 评论 -
数据结构实验之图论八:欧拉回路
数据结构实验之图论八:欧拉回路Problem Description在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。原创 2017-12-01 20:12:01 · 190 阅读 · 0 评论 -
数据结构实验之图论七:驴友计划
数据结构实验之图论七:驴友计划Problem Description做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。Input连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,原创 2017-12-01 19:32:57 · 273 阅读 · 0 评论 -
数据结构实验之图论六:村村通公路
数据结构实验之图论六:村村通公路Problem Description当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出的数据表,求使得每个村都有公路连通所需要的最低成本。Input连续多组数据输入,每组数据包括村落数目N(N O原创 2017-11-24 16:58:31 · 302 阅读 · 0 评论 -
数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
数据结构实验之图论五:从起始点到目标点的最短步数(BFS)Problem Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不原创 2017-11-22 15:11:20 · 345 阅读 · 0 评论 -
数据结构实验之图论四:迷宫探索
数据结构实验之图论四:迷宫探索Problem Description有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点?Input连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 Output若可以点亮所有结点原创 2017-11-22 14:46:10 · 501 阅读 · 0 评论 -
数据结构实验之图论三:判断可达性
数据结构实验之图论三:判断可达性Problem Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知原创 2017-11-22 14:17:06 · 627 阅读 · 0 评论 -
数据结构实验之图论二:图的深度遍历
数据结构实验之图论二:图的深度遍历Problem Description请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。Input输入第一行为整数n(0 Output输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。Exampl原创 2017-11-21 22:32:02 · 334 阅读 · 0 评论 -
数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历Problem Description给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)Input输入第一行为整数n(0对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k原创 2017-11-21 22:12:41 · 772 阅读 · 0 评论 -
数据结构实验之二叉树六:哈夫曼编码
数据结构实验之二叉树六:哈夫曼编码Problem Description字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在20%~90%之间。你的任务是对从键盘输入的一个字符串求原创 2017-11-10 21:58:26 · 286 阅读 · 1 评论 -
数据结构实验之二叉树一:树的同构
数据结构实验之二叉树一:树的同构Problem Description给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1 图2现给定两棵树,请你判断它们是否是同构原创 2017-11-10 21:57:50 · 207 阅读 · 0 评论 -
数据结构实验之二叉树七:叶子问题
数据结构实验之二叉树七:叶子问题Problem Description已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。Input 输入数据有多行,每一行是一个长度小于50个字符的字符串。Output 按从上到下从左到右的顺序原创 2017-11-01 15:54:06 · 211 阅读 · 0 评论 -
数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度Problem Description已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。Input输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。Output输出二叉树的深度。原创 2017-11-01 15:44:20 · 1046 阅读 · 0 评论 -
数据结构实验之二叉树四:(先序中序)还原二叉树
数据结构实验之二叉树四:(先序中序)还原二叉树Problem Description给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。Input输入数据有多组,每组数据第一行输入1个正整数N(1 Output 输出一个整数,即该二叉树的高度。Example Input9 ABDFGHIECF原创 2017-11-01 15:35:23 · 364 阅读 · 0 评论 -
数据结构实验之二叉树五:层序遍历
数据结构实验之二叉树五:层序遍历Problem Description已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。Input 输入数据有多行,第一行是一个整数t (t,代表有t行测试数据。每行是一个长度小于50个字符的字符串。Output 输出二叉树的层次遍历序列。原创 2017-11-01 14:39:58 · 218 阅读 · 0 评论 -
数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。Input连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。Output每组输入数据对应输出2行:第1行输出中序遍历序列原创 2017-11-01 14:27:37 · 296 阅读 · 0 评论 -
数据结构实验之二叉树三:统计叶子数
数据结构实验之二叉树三:统计叶子数Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。Input连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。Output输出二叉树的叶子结点个数。Example Input原创 2017-11-01 14:25:45 · 228 阅读 · 0 评论 -
数据结构实验之串三:KMP应用
数据结构实验之串三:KMP应用Problem Description有n个小朋友,每个小朋友手里有一些糖块,现在这些小朋友排成一排,编号是由1到n。现在给出m个数,能不能唯一的确定一对值l和r(l Input首先输入一个整数n,代表有n个小朋友。下一行输入n个数,分别代表每个小朋友手里糖的数量。之后再输入一个整数m,代表下面有m个数。下一行输入这m个数。原创 2017-10-18 17:15:13 · 377 阅读 · 0 评论 -
数据结构实验之串一:KMP简单应用
数据结构实验之串一:KMP简单应用、Problem Description给定两个字符串string1和string2,判断string2是否为string1的子串。Input 输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现原创 2017-10-18 16:33:20 · 246 阅读 · 0 评论 -
顺序表应用8:最大子段和之动态规划法
顺序表应用8:最大子段和之动态规划法Problem Description 给定n(1负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1 注意:本题目要求用动态规划法求解,只需要输出最大子段和的值。Input第一行输入整数n(1第二行依次输入n个整数,对应顺序表中存放的每个数据元素值。原创 2017-09-27 15:38:45 · 289 阅读 · 0 评论 -
顺序表应用7:最大子段和之分治递归法
顺序表应用7:最大子段和之分治递归法Problem Description 给定n(1当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1 注意:本题目要求用分治递归法求解,除了需要输出最大子段和的值之外,还需要输出求得该结果所需的递归调用总次数。 递归调用总次数的获得,可以参考以下求菲波那原创 2017-09-27 15:31:39 · 222 阅读 · 0 评论