引言
在我还记得的时候写一下吧,之前也有学长写过,他们写得挺好的,我也是参照他们的思路来大致写一下吧,希望能够给后来人带来帮助。
2022.4.8更新,加了笔试的内容在最下面
以上全凭本学期个人累积的经验,本人非科班,因此有不足之处还请谅解,肯定也有写得比我好的经验贴,本人就是随手记录一下
考试时不能打开任何除oj平台,编程软件之外的页面,考试开始前也不可以在编程工具上写代码,老师都会有提醒的
考试时长时两个小时,自己把握着时间,肯定先做简单题,简单题占分也高,我们今年的考试是使用华为云桌面来操作,再在云桌面上用chrome登录考试网址,考试网址是和OJ类似的平台,做题规则也是一样,只看提交结果是否正确(应该吧)反正我看到的是这样,不知道老师后面会不会再看代码,应该不会,看代码多折磨
第一题(35分)
疫苗预约(题目背景),主要考察对线性表的插入和删除,这里用链表或者用数组都是可以的
题目大致要求就是给出三个初始数组
然后需要完成对某个数组的插入或删除操作,随便写反正,
能实现要求就行,非常简单,没学过数据结构都能写
第二题(25分)
(取号什么的背景,反正也是和医院有关的) 折半查找,
查找成功则输出查找位置,并且要求输出查找次数
第三题 (15分)
树的拓扑排序,有一说一这题题目我没太看懂,但是实现它的功能是非常简单的
题目要求
大致是要求将一颗二叉树通过拓扑排序转换成有向图,也就是按拓扑顺序输出结点,双亲视为弧尾,孩子结点视为弧头
输入要求
第一行要求先输入结点的个数,例如节点个数为T,然后输入T个结点,题目给出的是字符
第二行输入每个结点对应的双亲位置,-1代表没有双亲
输出要求
按拓扑排序顺序输出结点(若多个结点同时都是没有双亲,则按字典顺序输出)
输入
8 A B C D E F G H
-1 0 4 1 0 1 4 6
输出
A B D E C F G H
(应该是这样)
第三题的话可能有些人一开始看着没看明白什么意思,其实我也没太懂,题目要求说要用到双亲结构来存储,就是要求写二叉树的结构吗?
但其实我感觉根本不用写,直接用结构体数组存储所有结点的字符和双亲位置,从0开始存储就好,然后就按着输入的双亲位置,自己画一颗树出来,推一下很快就知道怎么做了(第三题也并不算难)
第四题 (15分)
希尔排序
本次题目的要求是对一串字符序列进行升序排序(按ABCDEF这样排下去)
只要你掌握了希尔排序,写出这道题只是时间问题,不过这一次它的题目输入是不小心给少了一个数据,害的我做错了一次(就很不严谨啊好吧出题老师)
每年的话基本都会有一道排序题的,所以
第五题 (10分)
求单调最短路径问题
说白了就是迪杰斯特拉算法,基本上就是和Djikstra算法一模一样的要求,
输入输出要求可以直接参考OJ上的最短路径题目,可以说是一模一样了
可以参考我之前写的一篇迪杰斯特拉的算法,输入输出要求基本上是一致的
DS数据结构--求到各顶点的最短路径(迪杰斯特拉算法)_CHessheep的博客-CSDN博客
期末考成绩出来了,92分,可恶差一分就A+了,血亏,现在是多么后悔当初OJ课上有些题不会做的题就没写空在那里了,期末考也是,有一选择题明明算出来了但是却还是选错了,
不过结果还是比较出乎我的预料的,因为我感觉这个课真的好多内容而且好难,知识点好多
关于填空和选择的话,有些就是考书上的知识点,我记得有一道填空题,就是在那个多路查找树那个B+树那里直接书本上原话概念给你挖空,哇靠这谁记得啊,
然后选择的话会考一些计算题,然后还有算法的时间复杂度啥的,这些都要多记的啦,我记得考了一题对称矩阵
笔试的话好像是10道选择题和10道填空题吗(填空题有点忘了),然后大题有五道吗好像,我尽量回忆一下
考了队列,非常基础的一道题,就是你要弄清楚循环队列的原理,它是考了你队列中留一个空位的方法,就大概叫你写一下队列进出几个数字的情况。
考了串,叫你用next数组的方式来实现KMP算法完成串的比对,这一题第一问应该是叫你写一下next值算出来是多少,不知道有没有问nextval的
然后第二问就是叫你把算法代码写出来,基本就是把整个kmp算法写出来吧,只要这个熟练点的话也没什么问题,代码量不算多
排序算法,第一问好像考了堆排序吧,叫你把第几种情况的堆给画出来,只要你能够理解堆排序的话写出来应该不是很大问题
第二问是归并排序,也是写出排序的情况出来就可以,没有叫你手撕代码,所以说这些只要理解好就可以了,代码嘛归并排序我也背不下来,最好背的当然还是希尔排序hhh
我不记得考了几个小问了,总之只要考到这些,所有排序都理解并记住就好啦,也就七种排序吧好像。
这一题比较难了有点
考平衡二叉树的原理,这里也不用写代码应该,但是要把平衡二叉树的结点构建方法写出来,
具体是出一个乱序数组给你,让你用平衡二叉树的方法来给数组排序(我忘了是不是叫平衡二叉树了,过了都快三个月了),然后肯定会涉及左旋右旋,先左后右啊,先右后左啊什么的,它还会叫你把每一次的结点增加后的情况给画出来,差不多就是这样。
这一题是考图的路径了,第一问好像是要你求最小生成树来着,然后第二问直接让你手撕普利姆算法或者迪杰斯特拉算法都行,反正就是求最小路径,这里的代码量比较大,建议想拿下这题的人需要对图方面的知识特别熟悉,不过prim我考试前写过很多次了,所以把大概思路写出来是没有什么特别大的问题。
也是路径问题,但是我看不懂,没做,溜了,有个交叉路径啥的,忘了