自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 博弈论之正反Nim博弈

玩家轮流从若干堆物品中的某一堆物品取若干数量物,结论:有 n 堆物品,数量分别为a1​a2​a3​...an​a1​⊕a2​⊕a3​⊕...⊕an​==0a1​⊕a2​⊕a3​⊕...⊕an​!00⊕0⊕...⊕0^和 == 0经过一步拿取​^和!= 0(也就是说每一堆物品数的异或和是由 0非 0 之间相互转换的)

2025-05-05 22:03:21 1010

原创 算法设计课作业

输入包含多个测试用例。每个测试用例的第一行包含两个整数 N 和 M,分别表示可用的排名数量(2 <= N <= 500)和每个排名中的玩家数量(2 <= M <= 500)。每个描述都由 M 个整数组成的序列构成,这些整数之间用一个空格分隔,标识出在该周排名中出现的玩家。对于输入中的每个测试用例,你的程序必须输出一行内容,包含在排名中出现次数位居第二的玩家的标识号。大家都知道爷爷几十年来一直是个非常出色的桥牌玩家,但当宣布他将被载入《吉尼斯世界纪录》,成为有史以来最成功的桥牌玩家时,哇,那可太令人惊讶了!

2025-04-26 13:24:12 961

原创 做的一些题目的答案和自己的一些思考

LeetCode。

2025-04-26 13:21:02 660

原创 LeetCode 72.编辑距离

定义二维数组。

2025-02-05 17:24:20 661

原创 二分答案(进阶)

给定 x,如何统计有多少对 i, j 满足 a[i]+b[j]

2025-01-11 22:08:06 1207

原创 带头链表的原地逆置

【代码】带头链表的原地逆置。

2024-12-30 11:30:23 249

原创 红黑树及其插入和删除

每个节点非红即黑根节点是黑色红色节点不能连续(红色节点的子节点和父节点不能是红色)任意节点到其任何一个叶子节点所经过的黑色节点数量都相同所有的叶子节点(外部节点,NULL 节点, 失败节点)都是黑色的红黑树是二叉排序树,满足,左<根<右口诀速记左根右 根叶黑不红红 黑路同T data;// 存储节点数据,这里假设模板类型T为存储的数据类型// 标识节点颜色Node* left;// 指向左子节点// 指向右子节点// 指向父节点。

2024-12-26 15:31:06 1013

原创 常见的排序算法过程和比较分析

下标从 1 开始 index有这个规律。

2024-12-26 15:25:53 1036

原创 银行管理系统

cpp 版职员管理系统查询职员信息:按工号或姓名查找职员的详细信息,包括工号、姓名、性别、年龄和密码。入职:添加新职员到系统,录入信息包括工号、姓名、性别、年龄和密码。检查工号是否已存在,防止重复入职。离职:根据工号和密码删除指定职员。验证密码,确保离职操作的安全性。修改职员信息:修改指定职员的密码,提高系统安全性。显示所有职员信息:展示所有职员的详细信息列表。保存职员信息:将职员信息保存至指定文件,以便数据持久化。客户管理

2024-12-24 16:49:50 382 1

原创 B树的性质和插入过程

个点)上升为子树根节点(插入到未分裂前的根节点当中),中间点左右两端的点变为中间点的键值所在点的左右子树。若未分裂前的根节点被插入后满了,继续重复该操作。定位插入点:从根节点开始,逐层向下遍历B树,找到要插入的键值应该插入的位置。在插入点插入后,检查叶子节点是否已满。如果已满,则需要进行分裂操作。分裂操作:如果叶子节点已满(m 个点即满),将其分裂。

2024-12-17 22:56:35 1395

原创 平衡二叉树插入节点的小技巧

T 的根节点为 70 这个点,距离 T 的根节点最近的三个点依次是 67 68 70。若给如图所示的平衡二叉树插入 67 这个点。子树 T 上的其他点也按照规律填充(无其他点)最小不平衡子树 T 为框起来的这一部分。子树 T 的根节点相邻的三个最近节点。新子树 T 代替旧子树插入成功。此时树不平衡需要做的事如下。这三个点按照二叉排序树排列。我要插入 90 这个节点。插入 63 这个节点。

2024-12-07 19:58:51 247

原创 灰色关联分析

请输入类型矩阵:1: 极大型 2: 极小型 3: 中间型 4: 区间型。数据的正向化处理看 [[TOPSIS法]]一节。权重就是每个指标的关联度所占总关联度的和的比例。

2024-12-07 11:15:21 930

原创 TOPSIS法

TOPSIS 法作为一种多属性决策方法,在众多领域有着广泛的应用。它以其全面性、直观性和实用性为决策者提供了一种有效的决策工具。然而,我们也必须认识到它存在的局限性,如指标相关性、权重确定主观性和理想解相对性等问题。在实际应用中,需要根据具体情况,结合其他方法或采取相应的措施来弥补这些不足,以提高决策的准确性和可靠性。随着决策科学的不断发展,TOPSIS 法也在不断地完善和改进,相信它将在未来的复杂决策问题中继续发挥重要作用,为决策者提供更有力的支持和帮助。

2024-12-05 17:17:44 1177

原创 层次分析法(AHD)

它是一种用于量化不同因素之间相对重要性的工具,通过 1 - 9 标度法将人们对因素重要性的主观判断转化为矩阵中的数值。比如在选择投资项目时,准则层包含投资回报率、风险程度等因素,判断矩阵能够确定投资回报率相对于风险程度等其他因素是同等重要、稍微重要还是更重要等程度,并且通过计算其特征向量来得到各因素的权重向量,从而为后续的一致性检验和综合评价提供基础,最终帮助决策者在复杂的多因素决策情境下,根据因素间的相对重要性来做出更合理的选择。归一化处理得到(a/sum, b/sum, c/sum)

2024-12-05 17:03:24 1102

原创 图的存储、遍历以及Dijkstra/Floyd/Kruskal/Prim/拓扑排序/关键路径(实验8--作业)

图–数据结构操作与算法全解析一、引言图作为一种重要的数据结构,在计算机科学与众多领域中都有着广泛的应用。它能够有效地描述和解决各种复杂的关系问题,如网络拓扑、路径规划、资源分配等。本文将详细介绍图的相关操作和知识点,包括图的创建、遍历(深度优先遍历和广度优先遍历)、最小生成树(Kruskal 和 Prim 算法)、最短路径(Djikstra 和 Floyd 算法)以及拓扑排序,并结合具体代码进行深入剖析。二、图的基本概念图由顶点(Vertex)和边(Edge)组成。顶点表示对象,边表示对象之间的关系

2024-11-21 20:00:19 1015

原创 哈夫曼树及应用(实验7--作业)

定义哈夫曼树节点结构体和相关类型别名:通过typedef定义了HTNode结构体来表示哈夫曼树的节点,包含了权值、双亲、左孩子和右孩子的下标信息。同时定义了作为指向HTNode结构体的指针类型,以及作为二维字符指针类型用于存储哈夫曼编码。查找最小值函数(SelectMin):用于在给定的哈夫曼树节点数组中,找到权值最小和次小且父节点为0的两个节点。这是构建哈夫曼树过程中选择节点合并的关键步骤。构建哈夫曼树函数(CreateHuffmanTree)

2024-11-11 21:43:09 1276

原创 二叉树的链式表示及实现(实验6--作业)

这段 C++ 代码实现了二叉树的一系列操作,包括创建二叉树、前序遍历、中序遍历、后序遍历、层次遍历、中序非递归遍历、求二叉树深度、交换左右子树、统计节点个数以及销毁二叉树等功能。

2024-10-28 19:44:52 264

原创 C++实现循环队列和链式队列操作(实验5--作业)

实现了顺序队列(SqQueue)的数据结构,并利用该队列实现了打印前n行杨辉三角的功能。

2024-10-21 17:09:41 634

原创 C++实现顺序栈和链栈操作(实验4--作业)

实现了顺序栈(SqStack)的数据结构,并利用该数据结构进行了栈的基本操作以及数制转换的功能。

2024-10-21 14:14:36 1111

原创 C++实现单向链表操作(实验3--作业)

单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据域和一个指向下一个节点的指针域。这段 C++代码实现了一个单向链表的多种操作,包括初始化、插入、删除、查找、排序、合并和逆置等功能。

2024-09-10 20:09:37 1861

原创 C++实现顺序表操作(实验2—作业)

这段 C++代码实现了顺序表的初始化、插入、打印、置空、销毁、查找、删除、排序以及求并集、交集和差集等操作,并通过在主函数中对两个顺序表进行一系列操作来展示这些功能,最后还实现了在并集中查找特定元素的功能,并在结束时销毁了所有顺序表。可以使用指针来访问动态数组中的元素,通过重新分配内存来实现顺序表的操作。使用动态数组实现的顺序表的优点是可以动态调整大小,缺点是访问速度相对较慢。可以使用下标来访问数组中的元素,通过将元素插入或删除来实现顺序表的操作。在C++中,可以使用普通数组或者动态数组来实现顺序表。

2024-09-04 21:22:07 577

原创 trie树(字典树) 洛谷 P3879 [TJOI2010] 阅读理解

我之前发布了关于算法实现的文章,Trie树和KMP算法都是用于字符串匹配的算法,它们可以在一定程度上互相补充和优化。👇👇👇洛谷P3375 【模板】KMP_洛谷 p3375-CSDN博客算法的原理在上述博客中已经讲清,本篇博客用来讲解trie树算法正如它字面意思,把字符串按照字典的顺序存放在一棵树上,通过每个单词和其他单词的公共前缀把他们连接起来,如图所示如图所示: apple: appear: cat: bus: banana。

2024-08-28 18:44:40 849

原创 动态规划之0-1背包问题&&完全背包问题

经过优化空间复杂度的过程,我们发现 01背包和完全背包问题优化的主要点是搞清楚一维的dp数组对应的值是在哪一层所求出来的,然后再对应其二维dp数组的状态转移方程即可所以在做题时 先根据闫式dp分析法按照状态表示和状态计算分析根据题目中的限制写出状态转移方程 再根据状态转移方程判断是否在第 i 层用的都是 第 i 层或第i-1层的数据,进而根据实际情况选择正确的循环方向,进而优化空间复杂度t=N7T8t=N7T8。

2024-08-19 21:58:44 1571

原创 通讯录管理系统(黑马程序员C++项目)

【代码】通讯录管理系统(黑马程序员C++项目)

2024-08-13 21:50:47 211 1

原创 归并排序原理(洛谷 P1908 逆序对 应用)

然后 i 指向 3,j 指向 2,此时贡献出了两个逆序对(3和2 7和2),因为3 7是有序的,较小数在前面(3),3可以与右区间构成逆序对,更大的数 7 自然也可以由此得出规律,当 i 所指向的左半边的数大于 j 所指向的右半边的数时,贡献出 (mid - i + 1 )个逆序对(mid是左区间最右侧对应下标,i 是左区间对应的当前元素的下标,+1是表示个数,消除索引偏移),完成这一部分后,将右区间中的 2 存入临时数组中,j 指针指向 4 ,然后进行下一步操作。的思想,将一个无序的数组按照中点。

2024-08-13 21:43:24 1200

原创 P3374 【模板】树状数组 1

树状数组的单点修改和区间查询的时间复杂度均为 O(log n)lowbit() 运算是某个数的二进制表示最低为1 的位和它后面的0构成的数值得出的过程如下先按位取反 ~ 再+1得到的数再进行按位与 & 操作由于计算机存储时候用的是补码,所以取反(~)再加一(++)后的数实际就是这个数的倒数本身所以lowbit(n) = n & (~n+1) = n & (-n)

2024-08-11 22:07:33 664

原创 洛谷P1162 填涂颜色 P1506 拯救oibh总部

P1506 拯救oibh总部 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)P1162 填涂颜色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)可以先用P 1506练手。

2024-08-08 16:17:41 292 1

原创 洛谷P3375 【模板】KMP

P3375 【模板】KMP - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

2024-08-08 16:07:36 2177

原创 关于C语言函数库中qsort的理解与模拟实现

qsort函数是C语言函数库中的常用的排序函数,它的底层逻辑是快速排序,下面我们将理解下它并且尝试用冒泡排序为例子尝试模拟实现它。

2024-02-01 18:31:07 2085 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除