数据结构与算法
文章平均质量分 51
数据结构与算法
Sancean
Keep going
展开
-
多重背包的二进制优化
现在有价值分别为1到6的六种物品,数量分别是n1,n2,n3,n4,n5,n6,问是否可以把这些物品分成价值相等的两份?输入中的每一行描述了要分割的一个物品集合。这些物品由六个非负整数n1,n2,…,n6组成,其中ni是价值i的物品数。最大物品总数为20000。输入文件的最后一行是“0 0 0 0 0 0”;不要处理这一行。对应结果NOYES。原创 2022-10-16 16:08:55 · 419 阅读 · 1 评论 -
【LeetCode】48. 旋转图像
给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。使用另一个矩阵来旋转图像。原创 2022-10-09 14:38:37 · 231 阅读 · 0 评论 -
单调栈学习与应用
栈的应用,单调栈就是保持栈内元素有序,需要我们自己维持顺序,从栈顶到栈底是从小到大和从大到小两种情况。原创 2022-10-06 21:27:47 · 398 阅读 · 0 评论 -
贪心算法解决电台覆盖问题
假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号?原创 2022-07-22 12:50:30 · 159 阅读 · 0 评论 -
平衡二叉树(附Java实现源码)
右旋转平衡二叉树的添加步骤如果要添加的结点为空直接退出方法判断传入的结点的值与当前子树的根结点的关系要添加的结点的值小于当前结点的值若当前结点的左子结点为空,则将该结点设置为当前结点的左子结点若当前结点的左子结点不为空,递归向左子树添加要添加的结点的值大于当前结点若当前结点的右子结点为空,则将该结点设置为当前结点的右子结点若当前结点的右子结点不为空,递归向右子树添加添加完成后,在每一层子树都进行判断如果右子树的高度-左子树的高度 > 1 则进行左旋转如果当前结原创 2022-07-15 18:31:42 · 534 阅读 · 0 评论 -
数据结构与算法
数据结构与算法基本概念和术语数据(Data)是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称(集合)。是信息的载体;是对客观事物的符号化表示;可以被计算机识别、存储和加工。数据不仅仅包含整型、实型等数值类型,还包含图形、图像、声音、视频及动画等非数值类型对于整型、实型等数值类型,可以进行数值计算;对于字符数据类型,就需要进行非数值的处理。而声音、图像、视频等其实是可以通过编码的手段变成字符数据来处理的。数据元素(DataElement)是数据的基本单位,在计算机中通常作为原创 2022-01-24 10:42:41 · 1121 阅读 · 0 评论 -
部分查找算法的对比实现
部分查找算法的对比实现通过num变量改变数据集的规模,来进行对比。顺序查找#include <stdio.h>#include<stdlib.h>#include<time.h>#include<sys/timeb.h>typedef int KeyType;typedef struct {//顺序表结构类型定义 KeyType *R;//表基址 int length;//表长}SSTable;int Search_Seq( SSTa原创 2022-01-04 18:32:50 · 221 阅读 · 0 评论 -
线性探测法的查找函数
试实现线性探测法的查找函数。函数接口定义:Position Find( HashTable H, ElementType Key );其中HashTable是开放地址散列表,定义如下:#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度 */typedef int ElementType; /* 关键词类型用整型 */typedef int Index; /* 散列地址类型 */typedef Index Position;原创 2021-11-11 23:31:26 · 430 阅读 · 2 评论 -
查找二叉排序树
要求在二叉排序树中查找指定的关键字,并在查找过程中输出查找过程中历经的节点。函数接口定义:typedef int KeyType; //定义关键字类型typedef struct node //记录类型{ KeyType key; //关键字项 struct node *lchild,*rchild; //左右孩子指针} BSTNode;int ReadData(in原创 2021-11-11 22:37:11 · 1274 阅读 · 0 评论 -
二分查找 (20 分)
本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};L是用户传入的一个线性表,其中ElementType元素可以原创 2021-11-11 22:00:44 · 410 阅读 · 0 评论 -
二叉树的遍历
本题要求给定二叉树的4种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;st原创 2021-11-07 16:42:05 · 393 阅读 · 0 评论 -
二叉树的非递归遍历
本题要求用非递归的方法实现对给定二叉树的 3 种遍历。函数接口定义:void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType原创 2021-11-07 16:39:26 · 145 阅读 · 0 评论 -
二叉树求深度和叶子数
编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构函数接口定义:int GetDepthOfBiTree ( BiTree T);int LeafCount(BiTree T);其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。裁判测试程序样例://头文件包含#include<stdlib.h>#include<stdio.h>#include<malloc.h>//函数状态码定义#defin原创 2021-11-07 16:37:20 · 320 阅读 · 0 评论 -
jmu-ds-舞伴问题
假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。函数接口定义:int QueueLen(SqQueue Q);//队列长度 int EnQueue(SqQueue &Q, Person e);//加入队列 int QueueEmpty(SqQueue &Q);//队列是否为空原创 2021-10-09 21:41:35 · 594 阅读 · 0 评论 -
十进制转二进制(顺序栈设计和应用)
设计一个顺序栈,并利用该顺序栈将给定的十进制整整数转换为二进制并输出。函数接口定义:#define MaxSize 100 /* 栈最大容量 */int top; /* 栈顶指针 */int mystack[MaxSize]; /* 顺序栈 *//*判栈是否为空,空返回true,非空返回false */bool isEmpty();/* 元素x入栈 */void Push(int x);/* 取栈顶元素 */int getTop();/* 删除栈顶元素原创 2021-10-09 21:34:36 · 1726 阅读 · 0 评论 -
线性表元素的区间删除
线性表元素的区间删除给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:List Delete( List L, ElementType minD, ElementType maxD );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]原创 2021-10-01 15:31:00 · 2064 阅读 · 1 评论 -
顺序表创建和就地逆置
顺序表创建和就地逆置本题要求实现顺序表的创建和就地逆置操作函数。L是一个顺序表,函数ListCreate_Sq(SqList &L)用于创建一个顺序表,函数ListReverse_Sq(SqList &L)是在不引入辅助数组的前提下将顺序表中的元素进行逆置,如原顺序表元素依次为1,2,3,4,则逆置后为4,3,2,1。函数接口定义:Status ListCreate_Sq(SqList &L);void ListReverse_Sq(SqList &L);裁判测试原创 2021-10-01 15:30:17 · 210 阅读 · 0 评论 -
顺序表操作集
顺序表操作集本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode {原创 2021-10-01 15:29:10 · 388 阅读 · 0 评论