logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

吉林大学2023数据结构上机2

在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)。第2行,2n+1个整数,用空格分隔,表示T的扩展先根序列, -1表示空指针,结点用编号1到n表示。一个单词,表示字符文件中括号匹配的结果,匹配输出“yes”,否则输出“no”.。第1行,1个整数n,表示二叉树有n个结点, 1≤n≤100000.。第一

文章图片
#数据结构#算法#图论
吉林大学2023数据结构《第三次上机实验》解题报告

想了半天想不到一种不用stl的方法,于是用了一个queue和multiset来实现,一旦插入,就同时向两个链表同时插入,一旦输出,就从双端队列尾部输出然后从对应的multiset中输出,每次取反就将指针r=0/1来取反,一旦输出,若r=0输出multiset的头,若r=1输出multiset的尾。看了半天看不懂,只能抄代码了,结果不愿意用swap函数,手写了个交换函数,结果只能交换形参,找了半天,

文章图片
#算法
吉林大学2023数据结构《第二次上机实验》解题报告

先讲一下我在考试时的想法吧:当时还是不会用vector建立邻接边表,打算先用快排对边表排序,再记录以各个节点为起点的边表的位置,可是一旦用了快排稳定性就被破坏了,导致只有第四个点能过。课后实现时用顺序查找为n*n的时间级的,最后一个点死活过不去,问了吴博睿,知道使用单调栈,但我不知到从后往前的单调栈如何维护,最后看了csdn才恍然大悟,打表!用的克鲁斯卡尔kruskal算法,先输入边,与虚边,用快

文章图片
#深度优先#算法
吉林大学2023数据结构《第一次上机实验》解题报告

这道题我刚开始的思路和***的很想,维护一个栈,每次弹出一个,压入两个,每次从栈中找最小的弹出,但这是n*n的复杂度,所以不太行。然后我在课上没做出来,课后听到***的想法,决定建堆,然后维护这个堆,于是就可以达到n*log n的时间复杂度。先遍历上面一排数乘以下面一排第一个数,建立一个小根堆,然后弹出最上面的根节点,根节点改变(上面不变,下面的数右移一个)然后维护这个小根堆,重复弹出n个数,结束

文章图片
#算法#数据结构
吉林大学2023数据结构上机1

现指定从第1个人开始报数,报数到第m个人时,该人出圈,然后从其下一个人重新开始报数,仍是报数到第m个人出圈,如此重复下去,直到所有人都出圈。M表示等价元素对个数,1

文章图片
#数据结构#算法
吉林大学2023数据结构上机3

随后的每一组测试数据中,第1行两个整数n和m,用空格分隔,分别代表汉字数和操作数,2≤n≤9999,1≤m≤9999;第2至m+1行,每行包含3个常量s、i和j,用空格分隔,s代表操作的类型,若s为A或B,则i和j表示汉字的编号,若s为Q,i代表0或1,j代表汉字的编号。第1行,两个整数:N和M,表示整数的个数和区间长度,1≤N≤100000.q行,每行1个整数,表示f(i)的值。第1行,1个整数

文章图片
#数据结构#算法#图论
到底了