随笔分类 - 数据结构与算法
摘要:问题与解答 问题描述 先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。 输入格式 输入第一行表示样例数m,对于每个样例,第一行为数的个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。数和分组号的值都不超过10000。 输出格
阅读全文
摘要:问题与解答 问题描述 对给定的一个字符串,找出有重复的字符,并给出其位置。 输入格式 输入包括一个由字母和数字组成的字符串,其长度不超过100。 输出格式 可能有多组测试数据,对于每组数据, 按照样例输出的格式将字符出现的位置标出。 1、下标从0开始。 2、相同的字母在一行表示出其出现过的位置。 样
阅读全文
摘要:问题与解答 问题描述 给定一个二叉树,判断其是否是一个有效的二叉排序树。 假设一个二叉排序树具有如下特征: 结点的左子树只包含小于当前结点的树。 结点的右子树只包含大于当前结点的树。 所有左子树和右子树自身必须也是二叉排序树。 输入格式 第一行两个数n,root,分别表示二叉树有n个结点,第root
阅读全文
摘要:问题与解答 问题描述 有N个网络节点,标记为1到N。 给定一个二维数组times[M][3],表示信号经过有向边的传递时间。times[i][3] = {u, v, w}, 其中u是源节点,v是目标节点,w是一个信号从源节点传递到目标节点的时间,即二维数组中的一行表示一条带权有向边。 现在,我们向当
阅读全文
摘要:问题与解答 问题描述 求图中任意两个顶点之间的最短路径。 输入格式 输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,…,n-1进行编号)。之后的n行每行都包含n个整数,第i行第j个数表示顶点i-1和顶点j-1之间的边长,用10000来表示两个顶点之间无边。后面每行2个数字,表示
阅读全文
摘要:问题与解答 问题描述 计算AOE-网中关键路径的长度。 输入格式 输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,…,n-1进行编号),顶点数不超过100,其中0为源点,n-1为汇点。之后的n行每行都包含n个整数,为AOE-网的邻接矩阵,其中0表示两个顶点间无直接可达的弧,大于
阅读全文
摘要:问题与解答 问题描述 判断有向图中是否有环。 输入格式 输入数据第一行是一个正整数,表示n个有向图,其余数据分成n组,每组第一个为一个整数,表示图中的顶点个数n,顶点数不超过100,之后为有向图的邻接矩阵。 输出格式 输出结果为一行,如果有环,则输出1,如果无环,则输出0。按顺序输出这n个有向图的判
阅读全文
摘要:问题与解答 描述: 国家建设高铁网络,网络由一些连接城市的高铁线路构成。现有高铁建设情况可列为一张统计表,表中列出了每一条高铁线路直接连接的两个城市。国家的建设目标是全国每两个城市之间都可以实现高铁交通(但不一定有直接的高铁线路相连,只要能间接通过高铁线路可达即可)。问最少还要建设多少条高铁线路?
阅读全文
摘要:XDOJ324.图的广度优先遍历 问题与解答 问题描述 已知无向图的邻接矩阵,以该矩阵为基础,给出广度优先搜索遍历序列,并且给出该无向图的连通分量的个数。在遍历时,当有多个点可选时,优先选择编号小的顶点。(即从顶点1开始进行遍历) 输入格式 第一行是1个正整数,为顶点个数n(n<100),顶点编号依
阅读全文
摘要:作用 查:给定一个元素,查询它在哪个集合内 并:合并两个元素所在的集合 实现思路 对应关系 元素-->结点 集合-->树 多个集合-->森林 用树的根节点作为不同树的标志 合并时只需要将根节点链接 实现 用数组表示树,数组下标表示元素值,数组的值表示该元素对应的父亲结点 father[i] = j
阅读全文
摘要:hash函数构建 采取26进制 对于字符串str,令**H[i] = H[i-1]*26 + index(str[i]) **,最后H[i-1]就是str的hash值 问题:hash值过大,无法表式 取模 在上述基础上取模:*H[i] = (H[i-1]26 + index(str[i]))%mod
阅读全文
摘要:next数组 定义 严格定义:next[i]表示使子串s[0...k] == s[i-k...i]的最大的k(前后缀可以重叠,但不能是s[0..i]本身) 含义:最长相等前后缀的下标,没有则赋-1 图形化解释:s[0]开始找到一个最长子串,满足一个条件:把该子串拉到末尾时能与母串的完全重合 求解 递
阅读全文
摘要:AOV网和AOE网 AOV网 顶点活动网络(Activity On Vertex, AOV):用顶点表示活动,边集表示活动优先关系的有向图。 上图中,结点表示课程,有向边表示课程的先导关系。 显然,图中不应该出现有向环,否则会让优先关系出现逻辑错误。 AOE网 定义 边活动网络(Acitivity
阅读全文
摘要:有向无环图 有向无环图(Directed Acycilc Graph, DAG):从任意顶点出发都无法回到自身的有向图。 拓扑排序 定义 任一两个顶点u,v间,如果存在边u->v,则排序后u一定在v前面。 问题导入 上图表示了数学课程间的相互关系,图的每个结点表示一门课程,每条有向边u->v表示“u
阅读全文
摘要:最小生成树问题 最小生成树问题(Mininum Spanning Tree MST): 在给定无向图中,确定一棵树T,满足三个条件:a.包含图的所有顶点;b.边都是图的边;c.整棵树的边权之和最小 MST的性质: 包含n-1个结点;连通;树不唯一(最小边权和唯一) Prim算法:点贪心 基本思想:类
阅读全文
摘要:最短路径问题 单源最短路径问题:Dijstra[不带负权边]\Bell_Ford(SPFA)[可带负权边] 多源最短路径问题:Floy Dijstra算法:中介点优化 解决不带负权边的单源最短路问题 通过与源点s最短路径已知的点Vi为中介,优化Vi的邻接点与源点s的距离 基本步骤 MAXV:最大顶点
阅读全文
摘要:建立一个图 核心问题 怎么表示结点 怎么表示边以及边权 邻接矩阵 用二维数组表示一张图:数组的下标表示结点,数组的值表示边权。 如 G[1][2] = 11 表示结点1和2之间有条边且边权为2。 如要表示结点1和3之间没有边,可以写作: G[1][3] = 0/-1/INF。(INF是一个很大的数,
阅读全文
摘要:问题与解答 问题描述 对一棵完全二叉树,采用自上而下、自左往右的方式从1开始编号,我们已知这个二叉树的最后一个结点是n,现在的问题是结点m所在的子树一共包括多少个结点? 输入格式 输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。0
阅读全文
摘要:目录XDOJ315. 拓展先序遍历-->二叉树问题与解答题后反思:数组树的不足XDOJ318.先序+中序-->二叉树问题与解答题后反思:左右子树赋零XDOJ320.层序+中序-->二叉树问题与解答总结 XDOJ315. 拓展先序遍历-->二叉树 问题与解答 问题描述 编一个程序,读入用户输入的一串扩
阅读全文
摘要:问题与解答 问题描述 对一棵完全二叉树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。 输入格式 输入有多组数据。 每组数据第一行输入一个结点数n(1<=n<=1000),第二行将树中的这n个节点依次输入(每个结点存储的数据是一个数字),n个结点编号方式是层间从上到下、层内从左到右依
阅读全文