数据结构
文章平均质量分 51
程序员朱帅
不停的学习
不断的成长
展开
-
数据结构 第三章 栈和队列 代码
文章目录3.1 栈3.1.2 栈的顺序存储结构1. 顺序栈的实现2. 顺序栈的基本运算3. 共享栈3.1 栈3.1.2 栈的顺序存储结构1. 顺序栈的实现栈的顺序存储类型可描述为//声明顺序栈#define MaxSize 10typedef struct{ int data[MaxSize]; int top;} SqStack;2. 顺序栈的基本运算(1)初始化void InitStack(SqStack &S){ S.top = -1;//第一种原创 2021-08-10 18:07:42 · 120 阅读 · 0 评论 -
数据结构 第二章 线性表 代码
2.3 线性表的链式表示2.3.1 单链表的定义//创建单链表存储结构typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;2.3.2 单链表上基本操作的实现1. 采用头插法创立单链表//采用头插法创建单链表(带头节点LinkList List_HeadInsert(LinkList &L){ LNode *s;//插入的节点 int x;//新节点的值 L原创 2021-08-08 00:40:18 · 168 阅读 · 0 评论 -
数据结构代码
目录一、线性表1. 单链表的插入删除1.1 按位序插入(带头结点)【推荐使用】1.2 按位序插入(不带头结点)1.3 指定结点的后插操作1.3.1 用“后插操作函数”体验封装的思想1.4 指定结点的前插操作1.4.1 思路一:传入头指针,从头遍历1.4.2 思路二:交换的思想1.5 按位序删除(带头结点)1.6 指定结点的删除1.6.1 方法一:传入头指针,循环寻找p的前驱结点1.6.2 方法二:偷天换日(类似于结点前插的实现)数据结构代码实现一、线性表1. 单链表的插入删除1.1 按位序插入(带头原创 2021-02-15 17:23:37 · 2886 阅读 · 0 评论 -
AcWing 1346. 回文平方(寒假每日一题)入门组
题目描述回文数是指数字从前往后读和从后往前读都相同的数字。例如数字 12321 就是典型的回文数字。现在给定你一个整数 B,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B 进制表示是回文数字。输入格式一个整数 B。输出格式每行包含两个在 B 进制下表示的数字。第一个表示满足平方值转化为 B 进制后是回文数字那个数,第二个数表示第一个数的平方。所有满足条件的数字按从小到大顺序依次输出。数据范围2≤B≤20,对于大于 9 的数字,用 A 表示 10,用原创 2021-02-14 21:06:54 · 128 阅读 · 0 评论 -
AcWing 680. 剪绳子(寒假每日一题)入门组
题目描述有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。输入格式第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。输出格式输出一个数字,表示裁剪后最长的长度,保留两位小数。数据范围1≤N,M≤100000,0<Li<109输入样例:3 43 5 4输出样例:2.50样例解释第一根和第三根原创 2021-02-09 11:06:27 · 178 阅读 · 0 评论 -
数据结构-王道-笔记
2021版由于听网课的时候有一些画面很重要,书上没有,但是为了节省自己再用纸笔整理的时间,更集中于听课,保证连续性,所以在这里保存截图,也可以是说暂存,方便查找。目录2.2.1-顺序表的定义2.2.1-顺序表的定义在这里终于理解了增加动态数组长度的逻辑,虽然不难,但是需要在脑子里推演一边...原创 2021-02-08 22:42:11 · 592 阅读 · 0 评论 -
AcWing 1227. 分巧克力(寒假每日一题)入门组
题目描述儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式第一行包含两个整数 N 和原创 2021-02-08 12:27:15 · 207 阅读 · 0 评论 -
AcWing 422. 校门外的树(寒假每日一题)入门组
题目描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。输入格式输入文件的第一行有两个整原创 2021-02-07 12:07:12 · 129 阅读 · 0 评论 -
LeetCode 1208. 尽可能使字符串相等
题目描述给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回 0。示例 1:原创 2021-02-06 11:07:04 · 98 阅读 · 0 评论 -
AcWing 426. 开心的金明(数据遍历检测)
题目描述数独是一种流行的单人游戏。目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字。每个9x9矩阵在游戏开始时都会有部分数字已经给出,通常有一个独特的解决方案。给定完成的N2∗N2数独矩阵,你的任务是确定它是否是有效的解决方案。有效的解决方案必须满足以下条件:每行包含从1到N2的每个数字,每个数字一次。每列包含从1到N2的每个数字,每个数字一次。将N2∗N2矩阵划分为N2个非重叠N∗N子矩阵。 每个子矩阵包含从1到N2的每个数字,每个数字一次原创 2021-02-04 17:49:14 · 193 阅读 · 0 评论 -
AcWing 426. 开心的金明(0/1背包基础题)
题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j件物品的原创 2021-02-04 13:31:31 · 305 阅读 · 0 评论 -
AcWing 429. 奖学金(寒假每日一题)入门组
题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正原创 2021-02-03 12:11:54 · 249 阅读 · 0 评论 -
AcWing 104. 货仓选址(寒假每日一题)入门组
题目描述:在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式:第一行输入整数N。第二行N个整数A1~AN。输出格式:输出一个整数,表示距离之和的最小值。数据范围:1≤N≤100000,0≤Ai≤40000输入样例:46 2 9 1输出样例:12来源:《算法竞赛进阶指南》, 模板题思路:这是一道非常经典的题,原创 2021-02-02 10:44:07 · 125 阅读 · 1 评论 -
AcWing 898. 数字三角形(寒假每日一题)入门组
目录题目描述思路AC代码题目描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。输入格式:第一行包含整数n,表示数字三角形的层数。接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式:输出一个整数,表示最大的路径数字和。数据范围:1≤n≤500,−10000≤三角形中的整数≤10000输入样例:573 88 1 0 2 7 4原创 2021-02-01 12:12:46 · 190 阅读 · 0 评论 -
AcWing 420. 火星人(寒假每日一题)入门组
题目链接这是一个字典序全排列问题1. 第一种思路思路使用c++模板库中的next_permutation();函数直接水过next_permutation();的作用→输入一个序列,可以求出输入序列的下一个序列用法→next_permutation(p, p + n);AC代码#include <limits.h> //INT_MIN需要的头文件#include <iostream>#include <cstdio>#include <原创 2021-01-31 12:54:27 · 268 阅读 · 0 评论 -
AcWing 126. 最大的和(寒假每日一题)入门组
题的链接思路左上角和右下角两个点可以确定一个矩形。枚举这两个点要用4个for循环 如果用二维前缀和,那么这个做法的复杂度的就是O(n^4)。其实这个方案可以优化,那就是不枚举点。我们不枚举顶点,而是枚举边界。同时我们把边界内同一列的元素看成一个整体,每个整体的值就是这些元素的值的累加和,在这里我用不同色块来表示不同的整体,例如图中的,黄色色块,蓝色色块,绿色色块…现在,我们在这个固定边界里从左到右枚举"边界p",找出以边界p为右边界的最优矩形。前缀和问题,先理解一维的情况,再扩展到二维一原创 2021-01-30 22:56:55 · 144 阅读 · 1 评论 -
AcWing 1015. 摘花生(寒假每日一题)入门组
目录思路AC代码AcWing 1015. 摘花生(寒假每日一题)题目链接思路分为两种状态,计算最优解AC代码#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 110;//思路:最终的f[n,m]分为两种状态//分别是从左边趋近时:f[n,m-1]+w[n,m];//上边:f[n-1,m]+w[n,m]//每一原创 2021-01-29 21:47:09 · 109 阅读 · 0 评论 -
【赫夫曼编码】实现文件中数据的加解密与压缩
背景知识:二叉树的应用、赫夫曼树。目的要求:掌握赫夫曼树和赫夫曼编码的基本思想和算法的程序实现。实验内容:实现文件中数据的加解密与压缩:将硬盘上的一个文本文件进行加密,比较加密文件和原始文件的大小差别;对加密文件进行解密,比较原始文件和解码文件的内容是否一致。原创 2020-05-14 20:58:25 · 3966 阅读 · 9 评论