- 博客(31)
- 收藏
- 关注
原创 北航软件算法C3--动态规划
上述证明可以用剪切粘贴法:如果存在子树Ti’,其期望搜索代价比Ti小,那就将Ti从T中删除,将Ti’粘贴上去,从而得到一棵期望搜索次数比T还小的树,与T的最优性不符。dp[i][j]表示str1中,[0,i]的子串和str2中,[0,j]的子串的公共部分长度,必须以str1【i】和str2【j】作为结尾。在【i,j】区间选点r作为根结点,在所有的r里,找到期望搜索代价最小的那一个。,例如,Pi表示结点Ki的搜索频率,则问题就具象为了求搜索次数的最小期望值。定义dp【i,j】保存【i,j】的最小代价和;
2024-12-25 10:01:06
802
原创 北航软件算法C4--贪心部分
这学期一直没怎么有时间写blog,一直在赶各种上机和大作业,但是写博客确实能很好的巩固基础,也会发现很多在做题的时候发现不了的小细节,同时也可以很好的类比做过的其他题。但是你航软院的算法讲的是真差。。。。。这么难的课硬是逼人纯自学。崩溃了不下10次。
2024-11-07 12:11:41
774
8
原创 JAVA 继承和多态
当类的调用者在编写eat这个方法的时候,参数类型为Animal(父类),此时在该方法内部并不知道,也不关注当前的a引用指向的是哪个类型(哪个子类)的实例。对于类的调用者来说(DrawShape方法),只需要创建一个新的类就可以了,而不用多态的话,就要把DrawShape中的if-else进行修改,改动成本高。此时会发生报错,因为子类和父类中都有成员c,那么优先访问子类中的c,子类中的c是int类,那么不能赋值为double类。成员变量访问遵循就近原则,自己有,则优先访问自己的,如果没有,向父类中寻找。
2024-08-05 19:37:21
1086
5
原创 JAVA SE 类和对象
面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是计算机并不认识洗衣机,需要我们告诉它什么是洗衣机。上图右侧就是对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认识),但是这些简单的抽象结果计算机也不能识别,开发人员可以采用某种面向对象的变成语言来进行描述,比如:Java语言。在java中定义类时需要用到class//创建类field;//字段(属性)或者成员变量method;//行为或成员方法。
2024-07-26 17:32:21
1138
4
原创 二叉树经典OJ题
ABC##DE#G##F###,其中#表示空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。但我们这个题可以用前序遍历的思想去做,即比较根、左子树、右子树是否分别相同即可。首先要注意的是,两棵树的前序遍历结果一样时,结构可能是不同的。如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
2024-06-22 23:11:08
716
4
原创 北航数据结构与程序设计图部分选填题
①T={V1},U={V2,V3,V4,V5,V6},T中元素和U中元素的连线有9,10,16,最小边为9,因此v4加入T;③T={V1,V4,V3},U={V2,V5,V6},T和U中连线有16,11,14,18,最小边11,V2加入T。④T={V1,V4,V3,V2},U={V5,V6},T和U中连线有18,14,6,5,最小边5,V6加入T。n个顶点的无向图,边数最多的时候成为完全图。⑤T={V1,V4,V3,V2,V6},U={V5},T和U中连线有1,6,14,18,最小边1,加入。
2024-06-21 10:21:15
1200
3
原创 北航数据结构与程序设计查找与排序编程题
先对漏排的座位进行修正:已安排的最大座位号为27,学号为18373017和18373013的学生分别安排了27号座位,按照漏排座位修正规则,先将18373017学生安排在1号座位,再将18373013学生安排在3号座位;当前安排的最大座位号为22,还有2号和18号座位重复,将2号重复的学号较大的18373029号学生安排在23号座位,将18号重复的学号较大的18373026号学生安排在24号座位。1:在单词表中以顺序查找方式查找,因为单词表已排好序,遇到相同的或第一个比待查找的单词大的单词,就要终止查找;
2024-06-20 19:58:14
2462
4
原创 北航第六次数据结构与程序设计作业(查找与排序)选填题
但是我们可以根据满二叉树h=log(n+1)大概估计一下,如果是三层的满二叉树,那么n为7,如果是4层的满二叉树,则n为15。的次数,而不是18交换的次数,18先和10比较,发现18比10大。从arr[1]到arr[n-1],如果本身就递增,那么每个元素只跟自己的直接前驱元素比较一次就行,那么比较了n-1次。发生冲突,说明余数一致,说明能整除,放眼观去,63,9,45都能整除,因此3个和18冲突。看好了,是在序列中的位置,不是下标,位置从1开始,下标从0开始。若查找一个不存在的元素,说明进行了深度次比较。
2024-06-16 21:14:55
1307
5
原创 几种经典排序算法
排序需要若干遍循环完成,每循环一遍,就叫一趟。然后,我们今天的例子中,都是以排序为例的。另外,因为排序免不了需要交换位置,因此我们先写好一个Swap函数用于交换:*pa=*pb;*pb=tmp;
2024-06-16 19:16:09
1452
6
原创 北航数据结构与程序设计第五次作业选填题复习
满二叉树的深度和结点个数关系:n=2^h-1,则h=log(n+1),可得深度为:log(2048)=11,最后一层的节点个数,也就是叶结点个数为n=2 ^ (h-1)=2 ^ 10 = 1024。注意,当二叉查找树退化时,也就是说,差不多快变成一个链表的时候(左右子树深度之差过大),那么这个时候查找的时间复杂度就和在链表里查找的时间复杂度差不多了,就变成O(n)了。建立好的二叉查找树如上图,62先和54比,再和73比,再和62比,发现找到,结束比较,工比较三次。
2024-06-11 13:15:14
1378
9
原创 C语言 树与二叉树基础部分
树的基础概念 二叉树 二叉树的性质 二叉树的遍历 前序遍历 中序遍历 后序遍历 层序遍历 根据遍历结果恢复二叉树 二叉树的创建 第一种 第二种 二叉树的其他典型操作 查找指定元素(一般二叉树) 二叉树的高度(深度)
2024-06-09 19:45:19
812
7
原创 北航第四次数据结构与程序设计编程题复习
北航第四次数据结构与程序设计编程题 一、栈操作(栈-基本题) 二、C程序括号匹配检查 三、计算器(表达式计算-后缀表达式实现,结果为浮点) 四、文本编辑操作模拟(简)a 五、银行排队模拟(生产者-消费者模拟) - 分类别
2024-06-08 12:51:12
1550
5
原创 C语言 栈和队列基本操作以及经典OJ题
栈 链式栈的基本操作 初始化栈 入栈 出栈 判断栈空 取栈顶元素 队列 循环队列 初始化 入队 出队 判断空和满 链式队列 结构体 初始化 判断空
2024-06-04 11:25:52
866
11
原创 C语言 带头双向循环链表的基本操作
带头双向循环链表的基本操作 结构体定义 初始化 创建新节点 头插 头删 尾插 尾删 查找 在指定位置之后插入 删除指定位置的值 打印
2024-06-03 10:57:03
1267
9
原创 顺序表移除元素和合并有序数组OJ题
l1,l2,l3三个指针,l1和l2指向各自数组的最后一个元素(其中,l1指向自己的最后一个有效元素),然后比较l1和l2指向元素的大小,把打的那一个放到l3指的位置上,然后l3向前移动一位,然后刚才插入的是l1,l2谁的元素,谁向前移动一位。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。
2024-05-10 23:31:26
1093
8
原创 BUAA数据结构与程序设计选填题摘录(1-3)
我们在此基础上先记住一些简单的关系:struct {int x;int* y;}*p;下面表达式的含义为:基础为钢!下面我们开始谱写华章(不卸原神)!
2024-05-09 18:24:07
1087
5
原创 BUAA数据结构与程序设计第二次作业复习
昨天写了第一次作业的复习汇总:,感觉第二遍写比第一遍写要顺畅很多,也有了很多新的想法。今天就再把第二次作业复习复习,祝大家代码顺利哦~
2024-05-09 00:12:58
1376
7
原创 用堆实现在大量数据中筛选TOP-K
求数据结合中前K个最大的元素或者最小的元素,一般情况下。比如世界500强、游戏中前50名最活跃的玩家、专业前10等。对于TOP-K问题,最容易想到的方法其实是排序。但是,在数据量较大的情况下,我们不太可能把几十万、几百万个数据都放在内存中然后进行整体排序。这个时候,(想出这个方法的人真的是天才!!!好了,抓紧扶手,我们要开始加速了,接下来会惊呆你的下巴。注:这篇文章里用到的很多你可能觉得陌生的函数都在我的其他文章里,如果有不懂得要耐心地去看看哦。
2024-04-23 17:01:18
774
2
原创 堆排序及其时间复杂度(C语言)
啊?不用建堆那还怎么堆排序啊?是这样的,堆排序,未必要做一个堆出来,堆的结构本质是数组,那么我们针对数组来巧妙操作就可以完成,省去大量时间来写定义堆相关的函数。
2024-04-19 17:57:18
2458
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人