- 博客(15)
- 收藏
- 关注
原创 ⭐⭐⭐浙大PTA《数据结构》中文题目集7-24 树种统计
另外,这里的主要思路是使用哈希表进行查找和插入操作,众所周知,哈希表的效能在大数据量下的优劣极其依赖于散列函数的设计。本题中的数据量来到了10^5,已经相当大了。,如果输入中有空格,比如"Red Oak",scanf只会读取"Red",而剩下的"Oak"会被后续的输入处理捕获,导致数据错误,这导致两个不同的treename却因为他们的第一个字段都是Red被统计到了一起,最后的百分比和字典序排序都会出错。说实话这道题挺难的,但难的不是算法思路,而是它要求的格式,一不小心就错了。注释中的是等效写法,比较简便。
2025-03-18 19:53:58
171
原创 ⭐浙大PTA《数据结构》中文题目集 7-15 QQ帐户的申请与登陆
另外尽管题目中说明了对密码格式的要求,但实际上题目并没有给出相应的正确输出格式示例,测试用例中也没有测试点。所以也就没写这部分函数。下面是题解,哈希函数依旧使用了针对性能优秀的DJB2算法。和上一篇的题没有什么区别,只是多了一些过程控制。
2025-03-17 20:34:26
197
原创 ⭐⭐⭐浙大PTA《数据结构》中文题目集7-14 电话聊天狂人
2:如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。1:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。下面的方法中使用了一个非常普通但常用的散列函数,即对key取余。这里写得不标准,这是另一种等效的写法。此题满分为25分,但前两个测试用例通过仅拿到了15分。需要选择一个更好的散列函数。使用哈希表解决该问题。
2025-03-17 19:03:43
267
原创 ⭐⭐⭐浙大PTA《数据结构》中文题目集7-10 公路村村通
有些测试点的数据量是很大的,如果是使用没有优化的并查集会导致树结构倾斜,查找速度非常慢。因此为了通过此题必须使用优化后的并查集。其他需要注意的点都在代码注释中了。这题考察的挺全面的,很好的题。
2025-03-17 09:43:12
193
原创 ⭐浙大PTA《数据结构》中文题目集7-8 哈利·波特的考试
也就是说波特要带去的动物可以通过咒语变为考试范围内的任意一种动物,其次,波特要找一只能帮助自己拿高分的动物朋友。比如说波特带了一只猫,老师想为难波特,让波特将小猫变成小猪,而这条变身咒语在小猫的全部直接变身咒语中是最长的。但波特不希望被老师为难,他希望某种动物最长的变身咒语也不过寥寥几个字最好不过了。带什么动物去可以让最难变的那种动物(即该动物变为哈利·波特自己带去的动物所需要的魔咒最长)需要的魔咒最短?老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。
2025-03-16 17:45:28
228
原创 ⭐浙大PTA《数据结构》中文题目集7-5堆中的路径
当然可以,但是你需要将目前的堆顶元素处理好,比如你可以将全部的堆元素向下移动,时间复杂度为O(n),然后你需要像将堆初始化那样,将性质已经被完全破坏掉的堆,重新调整完毕,这个调整的过程的时间复杂度要比从向向上调整多一些)不要误解为将全部的元素输入后再调整为小根堆,这两者是完全不一样的,两种方式都可以成功建立小根堆,但是这两个小根堆是不一样的,结点的位置不同。因此,通过两种不同方式建立的小根堆最后输出的路径也会不同(当然,路径可能会很相似,但终归是有不同的地方的)。千万要看清楚了,题干是要求将给定的数字。
2025-03-15 20:01:40
439
原创 浙大PTA-《数据结构》中文题目集7-4 是否同一棵二叉搜索树
最笨的方法,即有先序序列和中序序列可以唯一的确定一棵二叉树,可以用来判断生成的树是否相同。
2025-03-15 15:19:12
201
原创 25考研计算机机试复试-树与二叉树相关习题实现(C语言)
前序非递归,借助栈实现(一般而言递归算法都可转换为借助栈实现的非递归算法,递归算法使用的是系统栈)后序非递归,这个会稍微麻烦一点,但是必须掌握,有部分算法题利用后序非递归的特性可以很方便的解决。注意删除某个子树时要后序删除,也就是先删除根的孩子,再删除根本身,这样不会导致断链。(递归前中后、非递归前中后、层次遍历) 深度优先遍历。利用层次遍历的特点,一层层出队,每出完一层高度就+1。2.二叉树的非递归形式遍历(前中后) 必须掌握!递归形式的遍历是最简单的也是最基本的,必须掌握。思路:后序非递归遍历。
2025-03-10 21:00:32
294
原创 25考研计算机机试复试-王道《数据结构》课后代码题C语言实现(第二章)
13.双链非循环链表L,结点中额外包括一个freq频度域,编写一个Locate(L,x)函数,要求每次定位一个值为x的结点时,都将链表中的结点按访问频度递减排序,最近访问的结点要排在频次相同的结点之前。在链表为单链的情况下,这道题暂时没想到好办法,暴力出来的,请见谅(数据量不大的情况下,可以拿到大部分普通情况的分数,另外由于时间仓促这里可能没有考虑一些小数据量下的极端情况,见谅)18.有相同后缀的单词,从相同后缀的起始位置开始共享存储空间,单词以单链表形式存储,请给出两个单词共同后缀的起始位置。
2025-03-08 22:20:02
849
原创 浙大PTA-数据结构与算法题目集(中文)-7-22 堆栈模拟队列
这里大家要注意的是,题目中要求的ERROR信息,这是一个很关键的地方,题目中所要求的队空和堆满ERROR都是在性能最优的情况先考虑的,也就是说我们上面的解决方法不是最优解,在我们的方法中队空队满都是假队空队满。其次,我们要选择一个栈作为输入栈一个作为输出栈,为什么?其实,如果只是为了模拟队列,我们不需要考虑很多,只需要满足先进先出的特性即可,不必区分哪个栈输入哪个栈输出。这里告诉大家,最优解就是,容量较小的作为输入栈s1,而容量大的则作为输出栈s2。比方说,我们可以:(这里定义s1为输入栈,s2为输出栈)
2025-03-07 22:36:49
606
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人