随笔分类 -  数据结构

摘要:有 n 种巧克力,巧克力的4个属性:价格、保质期、数量、种类编号(id),每天吃一个巧克力,吃x天,如何花费最低 输入:第一行x,n,接下来n行巧克力的价格、保质期和数量 输出:最低价格 1、算法分析: 按价格从小到大排序,从第一天开始,每天吃一个巧克力,但是,巧克力有保质期,在后面可能没有在保质期 阅读全文

posted @ 2023-03-27 22:27 金色的省略号 阅读(96) 评论(0) 推荐(0) 编辑

摘要:1、二维数组的前缀和 设二维数组,int arr[5][7];,以 arr[1][1] 作为矩形的左上角坐标,以此开始存储数据,数组最左边,最上边不存储数据,为空 设二维数组,int sum[5][7];,用以保存 arr 数组的前缀和,计算公式:sum[i][j] = arr[i][j] + su 阅读全文

posted @ 2022-11-07 11:06 金色的省略号 阅读(231) 评论(0) 推荐(0) 编辑

摘要:代码来源于青岛大学,周强老师的数据结构与算法实战mooc 算法思想,其一,利用 int 二维数组的值表示是否有蚊子,0表示没有,2表示有,值大于0用来判断有蚊子;其二,简化函数,利用五次调用函数,来实现炮弹落点及对落点上下左右的蚊子的伤害,在落点的蚊子生命减2,不在落点的生命减1,用kill表示减少 阅读全文

posted @ 2020-12-18 16:41 金色的省略号 阅读(212) 评论(0) 推荐(0) 编辑

摘要:代码来源于周强老师主讲的,青岛大学,数据结构mooc 分治法,是把原问题分解成规模较小的问题;从小问题的解,构建出原问题的解;使用分治法的前提是,把规模为N的问题划分成两个规模为二分之N的问题,然后把小规模问题再合并起来花的时间是线性时间,T(N) = 2T(N/2) + O(N) --> T(N) 阅读全文

posted @ 2020-12-01 16:15 金色的省略号 阅读(132) 评论(0) 推荐(0) 编辑

摘要:一、一个台阶总共有n级,如果一次可以跳1级,也可以跳2级...,也可以跳上n级,此时跳上一个n级的台阶总共有多少种跳法 递归函数的返回值,2*f(n-1),是数学归纳出来的 f(n) = f(n-1) + f(n-2) + … + f(n-(n-1)) + f(n-n); 即, f(n) = f(0 阅读全文

posted @ 2020-08-09 17:53 金色的省略号 阅读(109) 评论(0) 推荐(0) 编辑

摘要:当面对一个复杂的问题,需要求得问题最优解的时候,贪心法可以高效率的解决问题; 贪心法不是从整体最优考虑,它仅仅是通过一系列在局部看来最好的选择,而得到问题整体的最优解; 贪心法并不是对所有的问题都能得到最优解,但对许多问题它确实能产生整体最优解,而对一些问题即使不能得到整体最优解,也能得到最优解的近 阅读全文

posted @ 2020-05-07 10:35 金色的省略号 阅读(258) 评论(0) 推荐(0) 编辑

摘要:二叉树,二叉链表中,有N个结点,2N个指针,N+1个空指针,把空指针加以利用,可以线索结点的前驱或后继,这就形成了线索二叉树;无左孩子的空指针,指向该结点前驱,无右孩子的空指针,指向该结点的后继;这样,就可以不用递归或栈就可以遍历二叉树; 1、线索二叉树的概念,指向遍历序列前驱、后继结点的指针称为线 阅读全文

posted @ 2020-04-23 09:55 金色的省略号 阅读(350) 评论(0) 推荐(1) 编辑

摘要:N个数字的排列,由若干个独立的环构成,判断环的结束条件是,if(table[i] == i); 1 /* PTA Sort with Swap */ 2 #include <stdio.h> 3 #define N 100001 4 int main() 5 { 6 int n,sum=0; 7 i 阅读全文

posted @ 2020-04-21 09:45 金色的省略号 阅读(171) 评论(0) 推荐(0) 编辑

摘要:一、次位优先 1 /* 基数排序 - 次位优先 */ 2 3 /* 假设元素最多有MaxDigit个关键字,基数全是同样的Radix */ 4 #define MaxDigit 4 5 #define Radix 10 6 7 /* 桶元素结点 */ 8 typedef struct Node *P 阅读全文

posted @ 2020-04-20 22:32 金色的省略号 阅读(194) 评论(0) 推荐(0) 编辑

摘要:1、鞍点是指矩阵中的某元素A[i][j]是第i行中值最小的元素,同时又是第j列中值最大的元素。试设计一个算法求矩阵A中的所有鞍点。 1 #include <stdio.h> 2 3 #define M 4 4 #define N 5 5 /* 求二维数组的所有鞍点 */ 6 void saddleP 阅读全文

posted @ 2020-04-20 17:23 金色的省略号 阅读(606) 评论(0) 推荐(0) 编辑

摘要:一、数组,为n(>0)个元素的,有穷序列,记作A = (a1,a2,...,an),ai (n>=i>=1) 或者为相同数据类型的原子项,或者为相同定义的数组Bi;ai为原子项时,数组的维度为1,为数组Bi时,数组的维度为ai的维度+1; 1、数组的顺序存储,按行优先存储,按列优先存储; 低维下标大 阅读全文

posted @ 2020-04-20 09:34 金色的省略号 阅读(320) 评论(0) 推荐(0) 编辑

摘要:归并排序,是稳定的,不适合内排序,适合外排序,算法复杂度是O(Nlog(N)) 1、递归实现 /* 归并排序 - 递归实现 */ /* L = 左边起始位置, R = 右边起始位置, RightEnd = 右边终点位置*/ void Merge( ElementType A[], ElementTy 阅读全文

posted @ 2020-04-13 13:51 金色的省略号 阅读(160) 评论(0) 推荐(0) 编辑

摘要:给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换 就变成T2,则我们称两棵树是“同构”的。 题意理解:何为同构,给你两棵树T1和T2,根、左子树、右子树是一样的,那么两个树是同构的;若根一样,左子树与右子树、右子树与左子树一样也认为是同构的。 解题思路:二叉树如何表示 , 如何创建二叉树 , 阅读全文

posted @ 2019-12-27 11:53 金色的省略号 阅读(363) 评论(0) 推荐(0) 编辑

摘要:file transfer We have a network of computers and a list of bi-directional connections. Each of these connections allows a file transfer from one compu 阅读全文

posted @ 2019-12-24 17:10 金色的省略号 阅读(295) 评论(0) 推荐(0) 编辑

摘要:将递归算法重新写成非递归算法,让后者,把那些子问题的答案,系统地记录在一个表内,利用这种方法的一种技巧称为动态规划( dynamic programming ) 一、斐波那契数列 递归算法 # include <stdio.h> #include <string.h> int Fab(int n) 阅读全文

posted @ 2019-12-23 14:33 金色的省略号 阅读(338) 评论(0) 推荐(0) 编辑

摘要:解空间树:是依据待解决问题的特性,用树结构表示问题的解结构、用叶子表示问题的解的一颗树。 一、回溯法:采取深度遍历策略搜索解空间树,若当前结点不满足问题的求解要求,则回溯到树的上一层继续搜索另一棵子树,这种解决问题的方法称为回溯法; 1、用回溯法求解问题,重点是设计问题的解空间树,解题过程就是搜索解 阅读全文

posted @ 2019-12-23 13:00 金色的省略号 阅读(8566) 评论(0) 推荐(0) 编辑

摘要:二叉排序树或者是一棵空树;或者是具有如下特征的二叉树:若它的左子树不空,则左子树上所有结点的值均小于根结点的值;若它的右子树不空,则右子树上所有结点的值均大于根结点的值;它的左右子树也都分别是二叉排序树;二叉排序树的定义,是一个递归定义的过程;对二叉排序树进行中序遍历,遍历结果恰好是一个有序的线性序 阅读全文

posted @ 2019-08-28 15:37 金色的省略号 阅读(590) 评论(0) 推荐(0) 编辑

摘要:查找,在一组记录集合中,找到关键码值等于给定值的某个记录,或找到关键码值符合特定条件的某些记录的过程,也叫检索。 一、查找表,是由同一类型的数据元素(或记录)构成的集合。 二、提高查找效率的方法:1、预排序;2、建立索引;3、散列技术(不允许出现重复关键码,不适合进行范围查询); 三、平均查找长度( 阅读全文

posted @ 2019-08-28 15:35 金色的省略号 阅读(664) 评论(0) 推荐(1) 编辑

摘要:一、图,顶点(结点)之间的关系是任意的,任何结点之间都可能相关。 1、图是由两个集合,顶点集和边集组成的,记作,G = G(V, E),顶点是数据元素,边是两个顶点之间的关系。 2、图分为,有向图、无向图。设顶点(vertex)的个数为n,有n(n-1)/2 条边(edge)的无向图,称为无向完全图 阅读全文

posted @ 2019-08-18 16:51 金色的省略号 阅读(698) 评论(0) 推荐(0) 编辑

摘要:二叉树遍历的核心问题,是二维结构的线性化(栈、队列)。无论先序遍历、中序遍历、后续遍历,遍历过程中经过结点的路线是一样的,只是访问各结点的时机不同而已,每个结点都有三次访问机会。 一、二叉树结点,C语言定义 1 typedef struct TNode *Position; 2 typedef Po 阅读全文

posted @ 2019-08-18 16:47 金色的省略号 阅读(954) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示