
数据结构
rootting
一个立志于学算法,却总学不会的大学生
展开
-
数据结构暑期自学--MOOC浙江大学pta(7-28 搜索树判断)
1、建二叉树,根据输入的先序遍历直接插入,如果为根节点,那么创建空间,初始化左右子树,如果不为,那么就将当前datax和当前结点的data比较,大于则插入左子树,小于插入右子树。2、建好树,之后开始先序遍历该二叉树,比较和当前给出数组是否相同,如果不通,就比较和镜像的先序是否相同。3、镜像先序则将先序的跟左右,改为跟右左。镜像后序将后序的左右跟,改为右左根。...原创 2022-07-23 22:14:11 · 390 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-26 Windows消息队列,7-27 家谱处理)
1、用一个map来存当前字符串对应的父亲,每次存上当前的字符串,输入一行用。2、每次记录当前输入的空格(cnt),用一个last数组来存当前字符串。最后判断即可,这里可以用string来占那么没用的字符串。1、利用优先队列存结构体,直接按照题目要求输出即可。...原创 2022-07-21 23:00:03 · 322 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-25 朋友圈)
1、关于“我的朋友的朋友也是我的朋友” ,说明A和B为朋友,B和C为朋友,那么A和C为朋友,那么A和C为朋友,而C和D为朋友,那么A和D为朋友,以此类推,那么就可以发现该题就为并查集2、计算朋友的最大数,用fa(数组)首先初始化为-1,然后如果用其绝对值来记当前人所在圈子里的朋友数,因此在合并的函数中,我们要先找到父节点,再进行数量的合并有一点,很疑惑,不知道有没有大佬可以解答以下,我原先写的是然后,是什么原因?...原创 2022-07-09 23:24:50 · 457 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-18 银行业务队列简单模拟)
1、利用两个队列,先判断快的A队列是否为空,再在该循环中,每次输出两个A队列就输出一个B队列,当然要注意B队列在输出时为空,所以如果为空那么就直接继续输出A队列2、还有一点,A队列在次循环中是一定会全部输出的,但是B队列不一定,所以最后要加判断B队列是否完全输出,如果没有,那么就继续输出B队列...原创 2022-07-07 22:39:21 · 479 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-17 汉诺塔的非递归实现)
1、转换汉诺塔递归的思想,利用堆栈将其倒过来递归:先将n-1个块从a借助c移到b,再将a上的一个块直接移到c,最后将b上的n-1个块借助a移到c原创 2022-07-06 23:18:57 · 453 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-15 QQ帐户的申请与登陆)
1、利用map来存注册的QQ,之后按照题目要求输出即可原创 2022-07-05 22:55:55 · 448 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-14 电话聊天狂人)
1、直接利用hash表的查找,插入等功能2、如何输出答案:在扫描hash表时,遇到聊天数大的就记下号码和更新最大值,如果遇到聊天数相同的,就将个数加上1,并且更新最小的字符串原创 2022-07-05 22:54:03 · 182 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-13 统计工龄)
1、利用map直接一一对应,然后输出即可原创 2022-07-05 22:49:29 · 255 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-18 Hashing - Hard Version)
1、题意:该题给出一个经过hashing处理过的数组,要我们求原来数组的输入顺序2、该题的hashing处理矛盾的策略为线性探测,求位置:首先求出这个数对于所有个数的余数,如果该位置满了,就往下找直到找到空位置为止3、仔细思考,发现其实这个过程类似于拓扑排序的过程观察题目给出的数组,如果该数除以总数等于所在的下标,那么可以将该点看出入度为0,也就是要先输出如果不为下标,那么其入度可以算成其下标与余数的差,有一个细节 4、接下来处理连接点,因为只要该点与余数(下标)的点之间的点输出,那么该点的入度就可以原创 2022-07-05 22:45:11 · 315 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-17 Hashing)
1、先读懂题目,该题是给出一个m(指用户定义的tablesize,之后要根据这个数求出大于等于这个数的素数作为hash表的size)2、n是所给出的hash表里的数3、该题采用的是平方探测法里的正值,在利用该法求一个数应该放的位置时,要将所求的数对tablesize取余,利用该法找没有被占用的位置,再输出,且利用平方探测法可能会有元素一直找不到位置。...原创 2022-07-05 22:24:22 · 197 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-16 Sort with Swap(0, i))
题目链接该题主要是算环1、如果当0所处的位置就为下标为0的位置时,那么交换次数就为N-S+K;其他就直接N-S+K-2;原创 2022-06-30 19:16:47 · 174 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-15 PAT Judge)
题目链接主要用结构体,map和set分别来记数1、题目挺长,解释一下输入和输出首先第一行输入总共的人数(n),问题数(k),提交数(m) 接下来为每个问题提交满分的分数然后是每个提交数输出:首先输出所有都有有提交问题,并且分数大于等于0(即不是每题都错)的id,总分,每题分数排序:按照分数从大到小,分数相同,提交满分的题数从大到小,再id从小到大的顺序2、首先用结构体存数组,将每个人的每题分数先初始化为-1,方便后序判断该题是否有提交3、用sort函数来排序4、易错点,每题有人可能重复提交,所以对应的题的分原创 2022-06-30 18:56:01 · 189 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-14 Insertion or Heap Sort)
题目链接该题与上面一题相似,都是判断为哪个排序算法与上题思路相同,列出每步排序的函数,再分别判断插入排序就不说了堆排序:首先要将原数组建立成一个最大堆这里利用每次插入作为根节点的方法来做然后再将最上面的X[0](最大值)与最后一个结点交换,再将剩下的数组再弄成一个最大堆,然后再次交换...原创 2022-06-29 18:59:42 · 215 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-13 Insert or Merge)
题目链接这题我做了好久,气人,主要是因为以下的一直过不了这题就是直接利用插入排序和归并排序。1、首先要充分理解插入排序和归并排序的每一步,插入排序的每步,都是对一个tmp值处理p指当前取出tmp值的位置。然后是归并排序,这里归并排序要用到非递归的方法,其每一个就是选出一个length,然后进行归并排序。2、主函数中就按照题目意思,一步一步计算看是哪个排序提交一看,是InsertSort出了问题,输入输出这就很不对了,分析,从......原创 2022-06-28 20:04:09 · 244 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-12 How Long Does It Take)
该题利用拓扑排序1、读题:题目给出一个有向图,所有结点开始,都必须等该节点的入度结点完成时才能开始,所以很明显的拓扑排序2、如何计算最短时间:先给出拓扑排序模板: 利用该模板如何求出最短时间,用一个变量totalcost,每次一个结点的最短时间算出时,更新一次这个totalcost...原创 2022-06-26 23:49:26 · 143 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-11 关键活动)
题目链接挺麻烦的,就是进行了两次拓扑排序,一个按照出度,一个按照入度。1、初始化和定义,先定义个出度入度数组,还有两个数组分别记录一个工作最早和最晚完成的时间接下来是初始化,early数组要来计算最早完成工作的时间,当一个工作能开始,说明其入度的结点工作已完成,那必然是取所有入度结点活动时间的最大值,因此early数组初始化为0(最小值)k指当前从队列中取出的结点,i为与k连接的结点,重点 :注意cost[i][k]和cost[k][i]是不同的,算early数组和最少完成时间,用的是入度,因此用的是cos原创 2022-06-26 23:42:17 · 736 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-10 公路村村通)
题目链接最小生成树问题,这里利用Prim算法来解:1、首先是初始化,dist数组,既为判断是否被加入树中,也代表了该结点与上个结点的最小距离,初始化为最大值,同样,代表两条路连通花费的cost数组也初始化为最大值,处理自己到自己的cost初始化为02、利用与Dijkstra算法类似的思想,先从第一个结点开始作为起始点,注意要有一个计数器来记当前收入树中的结点,方便后序判断是否可以生成最小生成树。...原创 2022-06-26 23:22:13 · 290 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-8 哈利·波特的考试)
题目链接该题利用Floyd算法,在这里根据视频里的建图思想来写1、建图,先定义边,在定义图,再根据题目要求建图插边细节:题目中的结点下标从1开始,所以在插边时,要将结点--;2、 如何找出最适合的动物,再利用Floyd算法找出任意两条边的最小值时,再遍历一次结点,找所有结点里花费最大的,再从所有花费最大中找出最少的,那么该结点即为最适合的结点。3、当在FindMax中找该结点花费最大的时,要注意别跟自己到自己的结点比较大小,因为自己到自己的结点一直都置为最大初始值,这样比较导致所有结点的最大花费原创 2022-06-24 23:18:26 · 306 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-9 旅游规划)
题目链接本题是对Dijkstra算法的利用,多了一个算最小的花费1、首先是初始化,所有的G(存道路的距离),F(存花费), dist(存最短距离), mincost(存最短花费), 都设为最大值,且当前点到自己的距离和花费置为02、如何加入算最小的花费?在判断最小距离的同时,当最小距离和当前距离相同时,加上最小花费的判断,若当前距离小于最小距离,那么直接更新花费(因为优先级是先在距离最小的前提下,再来考虑花费)完整代码:...原创 2022-06-24 23:08:09 · 279 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-11 Saving James Bond - Hard Version)
这题细节真的有很多,真的很讨厌。1、本题与上题(easy)的不同点,该题要求的是007逃出岛的路径,因此要用到无权图单源最短路算法:2、细节一:题目说的: 说明有可能有多条路径均为最短,那么就输出第一次从岛上跳到鳄鱼上最短的一条。看到这里,我第一个想法是将所以最短的都存起来,后面判断,但是很快这种方法非常不好,最好在一开始就从最短的可以跳到鳄鱼上的路径开始选择,因此我修改了firstjump这个函数,让其既可以判断是否可以跳上鳄鱼,也可以返回长度,方便后序进行排序3、细节二:如何输出path:很原创 2022-06-23 23:10:56 · 211 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-7 Complete Binary Search Tree)
看了很多题解,也知道这题有更简单的做法,但是还是根据陈老师的方法来实现一遍1、首先是明确用数组来存这颗完全二叉树,那是最省最适合的2、关键思路:是对这一堆数进行排序然后求出左子树的结点的个数进而可以求出根节点,进行赋值之后有一个难点是如何根据根结点(该数组是以0下标开始)求出左子树和右子树的根结点:再不断递归3、如何求左子树的结点数:首先明确(假如树的根节点为第一层, 即h = 1),则第n层有 总共n层树,有看如下图 X的值是不能超过pow(2, h-1);4、还有个细节是如何进行排序,c语言的排序原创 2022-06-23 15:17:53 · 333 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-5 Tree Traversals Again)
第一次做这题,用的是根据先序和中序来建立个树,再后序遍历该树,听了课才发现,可以直接利用先序和中序来直接退出后序遍历。1、首先,不难发现,在出栈和入栈的过程中,所有的push操作,都是在先序遍历题目输入:那么该样例的先序遍历即为所有的pop出的数为该数的中序遍历2、接下来就利用这两种数据来推出后序遍历首先先序遍历的第一个点即为根节点,即为后序遍历的最后一个数接下来是在中序遍历中找该根节点,通过这个过程来确定左子树的个数,进而求出右子树的个数再进行这样的不断递归3、用栈来模拟样例中的操作,来求出先序和中原创 2022-06-21 23:08:19 · 146 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学PAT(1076 Forwards on Weibo)
该题与六度空间类似,只不过将六度空间里的六层改为一个变量L。很少有接触英文题,还看了我一段时间,只要还是根据数据来猜1、第一行是N,总共结点(下标从0-N-1),然后是L(代表最多可以查到的层数)2、接下来是N行,每行是0-N-1的结点的连接情况,先是一个该结点总的连接点数,之后是与该点连接的点。3、最后一行为要输出的点的连接数量,先是一个总数,再写出点输出以最后一行为标准的点,所连接的点的个数1、该图是一个有向图,所以要先自己定个方向,比方说且题目给出的0-N-1行数据里的点,定为该点->列出的点,比方说原创 2022-06-20 22:42:38 · 109 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-6 列出连通集)
c实现7-6 列出连通集原创 2022-06-20 22:25:51 · 107 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-7 六度空间)
数据结构,用c语言实现7-7 六度空间原创 2022-06-19 22:14:25 · 341 阅读 · 0 评论 -
数据结构暑期自学--MOOC浙江大学pta(7-10 Saving James Bond - Easy Version)
数据结构--c语言实现Saving James Bond - Easy Version原创 2022-06-19 21:56:57 · 198 阅读 · 0 评论