- 博客(12)
- 收藏
- 关注
原创 洛谷P1308:统计单词数
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
2025-08-08 18:41:32
181
原创 回形取数。
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输出只有一行,共m * n个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。
2024-12-24 11:04:26
192
原创 大顶堆还是小顶堆?
针对这种需要处理优先级的任务选择执行场景,需要设计一种数据结构,高效率实现以下两种操作,从集合中定位并删除最大值(执行任务),在集合中插入新元素(新增任务)。一个CPU处理的任务队列,并不总是按照时间顺序处理,有些任务有着更高的优先级。堆是一种完全二叉树:0号节点为根结点,i号的左子为2*i+1,右子为2*i+2。按照内部元素的大小关系,堆可以分为大顶堆和小顶堆两种。本题给出用数组实现的堆包含的所有元素,请判断其是大顶堆,小顶堆,或者不是堆呢?小顶堆(升序堆):每个结点的值都小于或等于其左右孩子结点的值。
2024-12-09 00:30:00
683
原创 算法9-2:有序表的折半查找
折半查找的查找过程是:首先确定待查记录所在的范围,然后逐步缩小范围直到找到或者确定找不到相应的记录为止。在本题中,读入一串有序的整数,另外给定多次查询,判断每一次查询是否找到了相应的整数,如果找到则输出整数相应的位置。只有1行,包含k个整数,分别表示每一次的查询结果。如果在查询中找到了对应的整数,则输出其相应的位置,否则输出-1。输入的第一行包含2个正整数n和k,分别表示共有n个整数和k次查询。第二行包含n个用空格隔开的正整数,表示n个有序的整数。第三行包含k个用空格隔开的正整数,表示k次查询的目标。
2024-11-24 23:00:42
304
原创 迪杰斯特拉最短路径算法
在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。可将迪杰斯特拉算法描述如下:设辅助向量u[0…n-1]、shortest[0…n-1]和path[0…n-1];u[i]为1表示从v0到vi的最短路径已经求出,为0表示尚未求出;shortest[i]记录目前已知的从v0到vi的较短路径的长度;
2024-11-16 18:52:05
563
原创 是否为有效的拓扑序列
本题会给出一个图,以及多个序列,你来判断每一个序列是否是该图的有效拓扑序列。第一行为2个正整数m和n,分别表示有向无环图的节点个数和边的数量。按行输出:o个序列中,每一个序列是否为图的有效拓扑序列。接下来n行,代表n条边。分别是起点、终点,以空格分隔。接下来为一个正整数o,表示接下来会出现的序列个数。在一个有向无环图中,可能存在多种有效拓扑序列。再往后是o个序列,序列中的每个值用空格隔开。
2024-11-08 21:37:21
187
原创 有向图是否存在环?
输入包括多组测试数据,每组测试数据首先是正整数n和m,表示有向图有n个节点(编号从1到n),m条有向边,接下来是m行,每行为两个正整数u和v,用空格隔开,表示从节点u到节点v有一条有向边,u和v都大于等于1且小于等于n。写程序判断有向图是否存在环。有向图的输入用n个二元组表示(u,v),表示从u到v有一条有向边,起点是u,终点是v。有向图的节点个数不超过100个,边的个数不超过1000。如果该有向图存在环,输出YES,否则输出NO。最后一行为0 0,表示测试数据结束。
2024-11-08 18:38:11
272
原创 无向图的连通分量和生成树
以后的n行中每行有n个用空格隔开的整数0或1,对于第i行的第j个0或1,1表示第i个顶点和第j个顶点有直接连接,0表示没有直接连接。在本题中,读入一个无向图的邻接矩阵(即数组表示),建立无向图并按照以上描述中的算法建立无向图的生成森林。对于非连通图,则需从多个顶点出发进行搜索,而每一次从一个新的起始点出发进行搜索的过程中得到的顶点访问序列恰为其各个连通分量中的顶点集。对于非连通图,每个连通分量中的顶点集,和遍历时走过的边一起构成若干棵生成树,这些连通分量的生成树组成非连通图的生成森林。
2024-11-07 00:00:00
583
原创 邻接矩阵存储图的BFS
其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。以后的n行中每行有n个用空格隔开的整数0或1,对于第i行的第j个0或1,1表示第i个顶点和第j个顶点有直接连接,0表示没有直接连接。在本题中,读入一个图的邻接矩阵(即数组表示),建立图并按照以上描述中的算法遍历所有顶点,输出遍历顶点的顺序。
2024-11-03 12:16:46
295
原创 Gomoku(五子棋)
例如: 已经放置的四个棋子位置为:(1,0), (1,2), (1,3), (1,4) 只有添加(1,1)才能形成连续的线,所以你的输出应该是(1, 1)。每一行包含两个整数i和j(0
2024-10-27 19:10:09
1318
原创 静态链表存储的二叉树的三种非递归遍历算法
题目描述用数组模拟实现链表的功能,即静态链表,也可以用来存储二叉树。请编写程序,用非递归遍历算法输出静态链表存储前中后三种遍历结果。
2024-10-26 23:23:56
221
2
原创 赫夫曼编码+解码
在实际应用中,由于总是希望被传送的内容总长尽可能的短,如果对每个字符设计长度不等的编码,且让内容中出现次数较多的字符采用尽可能短的编码,则整个内容的总长便可以减少。另外,需要保证任何一个字符的编码都不是另一个字符的编码前缀,这种编码成为前缀编码。为了确保答案唯一,题目的测试数据约定,合并两个节点时,先出现的节点(也就是数组中下标小的节点)为左子;在本题中,读入n个字符所对应的权值,编程实现生成赫夫曼编码,并依次输出计算出的每一个赫夫曼编码。首先输出n行,每行一个字符串,表示对应字符的赫夫曼编码。
2024-10-26 19:10:57
278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅