![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
ZzMeei
哈尔滨工业大学(威海) 软件工程专业;香港中文大学(深圳) RA
展开
-
哈希 基于词频的文件相似度
哈希 基于词频的文件相似度题目实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。输入输入首先给出正整数N(<= 100),为文件总数,随后按以下格式给出每个文件的内容:首先给出文件正文,最后在一行中只给出一个字符“#”,表示文件结...原创 2019-12-13 11:52:26 · 5698 阅读 · 2 评论 -
六度空间(广度优先搜索)
广度优先搜索 六度空间题目“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因...原创 2019-12-04 21:42:28 · 3404 阅读 · 1 评论 -
洛谷 P3371 【模版】单源最短路径(弱化版)
洛谷 P3371 【模版】单源最短路径(弱化版)题目给出一个有向图,请输出从某一点出发到所有点的最短路径长度。题目链接【模板】单源最短路径(弱化版) - 洛谷输入第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。输出一行,包含N个用空格分隔的整数,其中第i个整数表示从点S...原创 2019-12-03 21:41:22 · 315 阅读 · 0 评论 -
洛谷 P3366 【模板】最小生成树
洛谷 P3366 【模板】最小生成树题目给出一个无向图,求出最小生成树,如果该图不连通,则输出orz题目链接【模板】最小生成树 - 洛谷输入第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000)接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi输出输出包含一个数,即最小生成树的各边的长度...原创 2019-12-02 08:52:10 · 1091 阅读 · 0 评论 -
洛谷 P3367 【模板】并查集
洛谷 P3367 【模板】并查集题目见题目链接题目链接【模板】并查集 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解并查集模版题,参考朋友圈(并查集)区别在于寻找根节点的函数中,路径压缩由for循环的形式变成了递归的形式,从效率上来讲可能会好一点点 可能是一个常数级别的优化吧,我猜的代码#include <stdio.h>#define MAX ...原创 2019-11-30 19:43:00 · 186 阅读 · 0 评论 -
朋友圈(并查集)
朋友圈(并查集)题目某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入输入的第一行包含两个正整数N(<=30000)和M(<=1000),分别代表学校的学...原创 2019-11-24 08:11:58 · 735 阅读 · 0 评论 -
还原二叉树(前序+中序求二叉树)
还原二叉树(前序+中序求二叉树)题目给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入输入首先给出正整数N(<=50),为树中结点总数。下面2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出输出为一个整数,即该二叉树的高度。样例题解此题为利用先序和中序来构造整颗二叉树,关键在于利用先序序列(“根左右”)第一个...原创 2019-11-21 14:02:34 · 507 阅读 · 0 评论 -
二叉树的遍历(洛谷P1030 求先序排列)
二叉树的遍历(洛谷P1030 求先序排列)题目给出一颗二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度小于等于8)题目链接求先序排列 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解1、首先,在后序遍历中,最后一个节点一定是根节点(这一点对任何一颗子树都成立)2、根据根节点,在中序遍历中,根节点的两侧分别是该根节点的左子树(左叶子)和右...原创 2019-11-20 23:07:09 · 614 阅读 · 0 评论 -
静态链表构建二叉树(洛谷P1305 新二叉树)
静态链表构建二叉树(洛谷P1305 新二叉树)题目见题目链接题目链接新二叉树 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解本题的数据范围为a-z的26个小写字母,因此我们可以将小写字母转换成对应的int值来存储(字母减去int(‘a’)+1),同时这个值就作为节点数组的下标,这样在构建二叉树时,可以轻松找到对应的父节点。构建完成二叉树后,只需要从根节点进行递归(前...原创 2019-11-12 19:40:26 · 758 阅读 · 0 评论 -
后序遍历满二叉树(洛谷P1087 FBI树)
后序遍历满二叉树(洛谷P1087 FBI树)题目见题目链接FBI树 - 洛谷题目链接输入见题目链接输出见题目链接样例见题目链接题解本题可划分为两部分的问题来进行解决,首先是利用给定的01串来构造一个满二叉树,其中要对01串进行类似于二分的操作,因此我们可以使用递归的思路,将01串不断二分,并得到相应节点对应的字母(F、B、I),由此构成一颗满二叉树。我们采用一个带有两个指针域...原创 2019-11-08 14:24:27 · 314 阅读 · 0 评论 -
KMP模版题(洛谷P3375 KMP字符串匹配)
KMP模版题(洛谷P3375 KMP字符串匹配)题目见题目链接题目链接【模板】KMP字符串匹配 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解一个标准的KMP模版。具体算法原理参考:很详尽KMP算法(厉害) - ZzUuOo666 - 博客园无论是原理,还是实现,都写得十分详细、易懂。代码#include <stdio.h>void GetNe...原创 2019-10-30 22:02:35 · 227 阅读 · 0 评论 -
双向静态链表(数组实现)(洛谷P1160 队列安排)
双向静态链表(数组实现)(洛谷P1160 队列安排)题目见题目链接题目链接队列安排 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解此题涉及大量数据的移动、删除,因此首先想到要使用链表,但动态链表(指针实现)有一个缺点:查询某一个节点的效率低O(n),在此题的数据范围下是不可行的。然而查询某个节点正是数组的强项,效率为O(1),非常适合本题,因此我们可以构造一个用数组实...原创 2019-10-28 21:54:09 · 300 阅读 · 0 评论 -
栈(洛谷P1739 表达式括号匹配)
栈(洛谷P1739 表达式括号匹配)题目见题目链接题目链接表达式括号匹配 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解用一个栈来存储做括号,读取输入的时候,每读到一个左括号则压入栈,碰到右括号先判断栈是否为空,若为空,则输出“NO”(表明这个右括号无法被匹配),若不为空,则从栈中弹出一个左括号。读取输入结束后,判断栈是否为空,若为空,表明左括号和右括号恰好能匹配,输...原创 2019-10-28 20:06:29 · 319 阅读 · 0 评论 -
双向循环链表(洛谷P1996 约瑟夫问题)
# 双向循环链表(洛谷P1996 约瑟夫问题)题目见题目链接题目链接约瑟夫问题 - 洛谷输入见题目链接输出见题目链接样例见题目链接题解可以用一个双向循环链表存储人的编号,同时模拟报数,报到指定数字的人的节点从链表中删除,直至链表中无节点。代码#include <stdio.h>#include <stdlib.h>typedef struct...原创 2019-10-28 19:46:23 · 512 阅读 · 0 评论