自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 先来先服务(FCFS)CPU 调度算法的实现

FCFS 是一种非抢占式的 CPU 调度算法,先到达的进程先执行。如果有两个或多个进程同时到达,则进程 ID 较小的进程先执行。

2025-05-12 12:52:54 1067

原创 简单异或加密

/ ...定义了一个名为ciphers的命名空间,其内部又嵌套了一个名为XOR的命名空间,用于组织和封装与XOR加密算法相关的函数,避免命名冲突。

2025-05-12 12:03:40 597

原创 维吉尼亚密码C++实现

维吉尼亚密码是一种加密字母文本的方法,它基于一个关键词中的字母,运用一系列交织的维吉尼亚密码表进行加密,采用的是多表替换的形式。

2025-05-08 14:50:23 1087

原创 C++实现摩斯电码

优势模块化设计:每个功能独立清晰严格的错误处理:遇到非法输入立即终止完整的测试覆盖:验证核心功能正确性局限性与改进方向字符支持有限:仅支持小写字母(需扩展大小写转换)缺少标点符号支持(国际摩尔斯码包含标点)错误处理较严格:遇到无效字符直接退出(可改为异常处理)字符串分割问题:末尾空格导致空字符串错误(应去除首尾空格)性能优化:使用unordered_map实现双向查找预先计算映射表提升效率扩展性:可添加文件加密功能支持音频/灯光信号模拟。

2025-05-07 20:02:03 1358

原创 C++实现 椭圆曲线迪菲 - 赫尔曼密钥交换

/ 坐标return op;} Point;作用:表示椭圆曲线上的点。细节包含x和y坐标。重载==运算符比较两点是否相同。重载<<运算符输出点坐标。椭圆曲线运算:实现点加法、标量乘法等核心操作。大数支持:依赖自定义的uint256_t处理大整数运算。安全性:通过预定义的曲线参数确保算法符合标准。验证:测试函数验证各个模块的正确性,确保密钥交换可靠。

2025-05-07 13:31:32 856

原创 凯撒密码算法的实现

这段代码实现了标准的凯撒密码加密解密功能,具有以下特点:使用命名空间组织代码提供了辅助函数处理字符和整数之间的转换实现了加密和解密的核心逻辑包含了测试代码验证功能的正确性处理了负值等边界情况代码结构清晰,功能完整,适合学习和使用凯撒密码的基础实现。

2025-04-29 18:38:58 757

原创 ship_plant船舶模型

仅考虑平面运动(Surge, Sway, Yaw),忽略垂荡(Heave)、横摇(Roll)、纵摇(Pitch)。:定义Simulink S-Function的标准框架,处理不同仿真阶段(初始化、微分计算、输出等)。:与标准船舶模型(如Mariner Class船舶)参数对比,确保惯性矩阵合理性。通过此模型,可以模拟船舶在外部干扰下的动态响应,并验证控制器的跟踪性能和鲁棒性。:添加速度、位置或航向角的物理约束(如最大舵角限制)。:描述船舶的惯性(含附加质量)和流体阻尼特性。函数的输入(需匹配维度)。

2025-04-28 15:52:31 1245

原创 Base64 编码与解码

在编程领域,是一组二进制到文本的编码方案,通过将数据转换为基数为 64 的表示形式,以 ASCII 字符串格式来表示二进制数据(更确切地说,是一系列 8 位字节)。“Base64” 这一术语源自特定的多用途互联网邮件扩展(MIME)内容传输编码。每个非最后的 Base64 数字恰好代表 6 位数据。因此,三个 8 位字节(即总共 24 位)可以由四个 6 位的 Base64 数字来表示。

2025-04-28 13:35:05 1063

原创 C++实现Atbash密码

这个映射表定义了每个字母(包括大写和小写)及其对应的Atbash加密字母之间的映射关系。验证加密结果是否与预期一致,并验证解密后的文本是否与原始文本一致。查找每个字符的对应值,并将其追加到结果字符串。打印原始文本、预期文本、加密文本和解密文本。对加密结果进行解密,应得到原始文本。将加密后的字符串再次作为输入,调用。使用断言验证加密和解密的正确性。:输入的待加密或解密的字符串。返回加密或解密后的结果字符串。:确保解密结果与原始文本一致。遍历输入字符串的每个字符。进行加密和解密测试。:确保加密结果正确。

2025-04-25 16:09:27 499

原创 A1Z26算法实现

将每个数字转换为对应字母,合并后添加空格分隔单词。:将数字转换回字母,支持可选的大写输出。为空格(意图可能是处理特殊符号)。按空格分割加密字符串为单词数组。分隔数字,单词间用空格分隔。如果是空格,删除前一个多余的。移除末尾多余空格,可选转大写。为空格,再分割为数字数组。:将字母转换为对应数字(如果是字母,查找映射表。输入文本转为全小写。

2025-04-25 10:38:24 630

原创 使用位掩码解决旅行商问题

在测试部分中,邻接矩阵用于描述各城市之间的距离,每行表示一个城市的出发点,每列表示一个城市的到达点,矩阵中的元素表示从出发城市到到达城市的距离。在回溯过程中,程序会根据邻接矩阵中的距离,递归地计算从当前城市出发,访问所有未访问城市的最小路径成本,并根据动态规划的结果来更新全局最小路径成本。

2025-04-23 13:51:17 2602

原创 位操作之从右侧开始,设置整数 N 的二进制表示中的第 K 位

详细说明给定一个数字 N 和一个值 K。从右侧开始,设置数字 N 的二进制表示中的第 K 位。最低有效位(或最后一位)的位置是 0,倒数第二位的位置是 1,以此类推。一个二进制数由两个数字组成,即 0 和 1。在计算机术语中,数字 1 被称为置位。最坏情况下的时间复杂度:O (1)空间复杂度:O (1)

2025-04-23 12:57:15 223

原创 判断给定的数是否为 2 的幂次方

直接提取最右边的1,判断是否与原值相同,相同即为2的幂。

2025-04-22 20:28:25 151

原创 具有相同数量的置位(1位)的下一个更大数字

异或运算标记出所有发生变化的位(原数和新数的差异)。:将进位后的高位与调整后的低位模式合并,形成最终结果。标记出所有因进位发生变化的位(例如进位后左侧新增的。:所有操作均为常数时间的位运算,不依赖数据规模。补码性质:-x = ~x + 1。重新排列到最低位,确保总位数不变。),此时左侧的高位部分已确定。除法与右移:等效于将右侧的。:将差异位右移到最低位。的模式(即原数右侧连续的。,保留需要移动到右侧的。,为后续进位做准备。(相当于右移2位)。:得到右侧需要补充的。

2025-04-22 19:58:10 327

原创 返回两个整数间的hamming distance

整数处理:通过异或和位计数实现高效计算(O(1)空间复杂度)字符串处理:线性遍历比较,需确保等长条件测试覆盖:包含边界情况(全0、全1、完全相等)验证算法正确性扩展性:可轻松修改支持其他数据类型(如字节数组)使用的方法可以更高效地计算二进制中1的个数,尤其是在处理具有大量0位的数字时。这种方法不仅代码简洁,而且性能更优。

2025-04-22 13:01:19 737

原创 基于异或和哈希表用于在由重复整数组成的数组中找到不重复整数的实现方法

程序通过异或运算高效找到数组中唯一出现一次的数字,时间复杂度为 O(n),空间复杂度为 O(1)。详细说明:给定一个整数数组,其中除了一个整数只出现一次外,其余所有数字都恰好出现两次。找到那个不重复的整数。这个程序用于找出数组中唯一一个不重复的整数,利用异或运算的特性高效实现。:通过异或运算找出数组中唯一出现一次的数字。最坏的情况下的时间复杂度:O(n)验证函数在不同输入场景下的正确性。(任何数与0异或结果为其本身)。的值即为唯一不重复的数。组织代码,提高模块化。(相同数异或结果为0)。

2025-04-22 12:12:52 383

原创 C++计算 n! 中末尾零的数量

【代码】C++计算 n!中末尾零的数量。

2025-04-22 00:00:00 368

原创 C++实现对一个整数 [计算其置位(二进制位为 1)的位数

这是一个函数,用于计算整数n的二进制表示中1的个数。这段代码通过使用位操作技巧高效地计算了一个整数二进制表示中1的个数。这种方法避免了逐位检查,而是直接定位到每一个1并清除它,从而提高了效率。使用名称空间有助于组织代码,测试函数确保了代码的正确性。

2025-04-21 12:21:03 562

原创 整数比特翻转次数计算

这是一个函数,用于计算将整数A转换成整数B所需的比特翻转次数。

2025-04-21 12:03:46 1930

原创 通过回溯结合动态规划的方法解决通配符匹配问题

有两种选择:匹配零个字符或匹配一个或多个字符,递归处理这两种情况。不等于-1,说明这个位置的结果已经计算过,直接返回存储的结果。:根据当前字符的情况,选择不同的处理方式,确保匹配的正确性。:函数通过递归的方式处理不同的匹配情况,直到达到边界条件。:用表格存储中间结果,避免重复计算,提高效率。都等于各自字符串的长度,说明匹配成功,返回。用于存储中间结果,避免重复计算,提高效率。,匹配任意单个字符,递归处理下一个字符。等于模式的长度,说明匹配失败,返回。,存储子问题结果,避免重复计算。

2025-04-17 19:16:59 665

原创 基于回溯思想的C++数独求解器

算法核心:回溯法,通过递归尝试所有可能数字,遇到矛盾时回溯。关键优化isPossible函数确保每一步的合法性,减少无效搜索。用户体验printMat通过颜色区分原始数字和新填数字,提升可读性。适用性:针对标准9x9数独设计,代码结构清晰,易于扩展(如支持其他尺寸需调整子网格计算逻辑)。

2025-04-16 15:06:36 1989

原创 基于哈希表和前缀和的子集和问题(仅针对连续子集)

函数名:subarray_sum为实现子数组计数功能的主函数功能描述:实现对满足特定和值的子数组数量的统计。参数说明sum:任意子数组需要达到的目标和值。in_arr:输入的数组。返回值:返回和等于目标和值的子数组的数量。sumarray;i++) {核心逻辑解析初始化变量:记录从数组起始到当前位置的累加和(前缀和)。sumarray:哈希表,键为前缀和的值,值为该前缀和出现的次数。:统计符合条件的子数组数量。遍历数组更新前缀和:每次迭代将当前元素加入。直接匹配目标值:若。

2025-04-15 12:20:58 827

原创 基于C++实现迷宫中的老鼠算法

该代码正确实现了回溯算法解决迷宫问题,能够找到一条可行路径。通过递归和路径副本管理确保逻辑正确性,适用于小规模迷宫。对于大规模迷宫或需要所有解的场景,需进一步优化和改进。

2025-04-15 11:33:21 775

原创 基于对称性优化8皇后问题

对称性优化通过减少搜索空间和避免重复解,将N皇后问题的计算复杂度从指数级显著降低,尤其适合大规模棋盘(如N≥10)。其核心是数学对称性与算法剪枝的结合,是回溯算法优化的经典范例。i < n;i < n;i++) {

2025-04-14 13:53:56 722

原创 回溯思想解决八皇后问题

指的是在一个 8×8 的棋盘上放置八个国际象棋皇后,使得任意两个皇后都不会相互攻击。也就是说,任何两个皇后都不能处于同一行、同一列或同一对角线上。八皇后问题是更具一般性的(即在一个 n×n 的棋盘上放置 n 个互不攻击的皇后)的一个实例。除了 n = 2 和 n = 3 之外,对于所有自然数 n,该问题都存在解。这段代码是用 C++ 实现的八皇后问题的解决方案,使用了回溯算法。

2025-04-11 16:38:02 659

原创 基于回溯思想的极大极小值算法

极小极大算法(有时也写作 MinMax、MM 或鞍点算法)是一种决策规则,应用于人工智能、决策论、博弈论、统计学和哲学领域,旨在将最坏情况(最大损失)下可能的损失降至最低。当处理收益问题时,它被称为“极大极小”算法,即最大化最小收益。该算法最初是为二人零和博弈论而提出的,涵盖了玩家交替行动和同时行动这两种情况,目前已被扩展应用于更复杂的博弈场景,以及存在不确定性情况下的通用决策制定。该代码实现了极小极大算法,用于在二叉树中找到最优值。使用极小极大算法递归遍历二叉树,模拟两人博弈中的最优决策。

2025-04-07 21:32:23 699

原创 USV状态空间模型

相对于选定的坐标系(对于低速航行器,该坐标系通常是固定于地球的),海洋航行器在空间中会经历六自由度的运动。这些自由度在平移运动中被称为纵荡、横荡和垂荡,在旋转运动中被称为俯仰、横滚和偏航。对于水面航行器,特别是在处理执行器效应时,横滚、俯仰和垂荡的影响可以忽略不计,航行器模型可以简化为如图所示的仅具有三个自由度的平面运动。通常,如果将无人水面艇视为刚体,动态模型可以分为两部分:运动学,处理运动的几何方面;上述方程完整描述了AUV的动力学和运动学行为,可用于数值仿真(如代码中的龙格-库塔法)。

2025-04-03 16:31:43 574

原创 通过回溯法解决Magic Sequence问题

对于一个长度为 n 的魔法序列 x0​,x1​,⋯,xn−1​,其中每个元素 xi​ 都在 0 到 n−1 这个范围内。并且,对于序列中的每一个索引 i(0≤i≤n−1),数字 i 在整个序列中出现的次数恰好等于 xi​。Magic Sequence问题要求找到长度为n的序列,使得每个元素x_i恰好等于i在序列中出现的次数。该方法通过回溯与剪枝有效减少搜索空间,适用于较小n值的求解,较大的n可能因组合爆炸导致效率问题。函数检查生成的序列是否满足条件,即每个i的出现次数等于x_i。

2025-04-01 12:09:59 329

原创 基于回溯思想的小游戏Knight‘s tour 骑士巡游

该代码通过回溯法系统地探索所有可能的骑士路径,确保找到解(如果存在)。虽然时间复杂度较高,但对于标准8x8棋盘仍能有效求解。

2025-03-31 15:21:52 1513

原创 基于回溯思想的图着色算法详解

图着色问题是经典的NP完全问题,其目标是为图中的每个顶点分配一种颜色,使得相邻顶点(即通过边直接相连的顶点)不会具有相同的颜色。:O(m^V),其中m为颜色数,V为顶点数(最坏情况下需尝试所有组合)。该算法通过系统地探索所有可能的着色组合,确保找到所有有效的图着色方案。:当无法为当前顶点找到有效颜色时,递归自动回溯到上一层尝试其他颜色。表示顶点0颜色1,顶点1颜色2,顶点2颜色3,顶点3颜色1。:尝试为每个顶点分配所有可能的颜色,并在发现冲突时回溯。:在分配颜色前检查该颜色是否与相邻顶点的颜色冲突。

2025-03-28 13:25:51 427

原创 使用回溯法生成所有有效的括号组合

该方法通过回溯和剪枝高效生成所有有效括号组合,时间复杂度为O(4^n / √n),空间复杂度为O(n)用于递归栈。递归构建字符串,优先添加右括号,再添加左括号,确保所有有效组合被生成。通过递归回溯的方法,逐步构建可能的括号组合,并在不满足条件时剪枝。优先尝试添加右括号,再尝试添加左括号,确保所有可能的组合都被探索。当右括号数量超过左括号时,当前路径不可能有效,直接返回。:检查右括号数量是否超过左括号,及时终止无效递归路径。右括号的数量不超过左括号的数量。函数递归地构建可能的字符串。左括号的数量不超过n。

2025-03-28 11:37:00 390

原创 C++程序实现了一个基于控制台的记忆匹配游戏

定义了一个。

2025-03-26 10:57:50 1214

原创 奖学金评定系统C++实现

选择一个基准值,将数组分为两部分,左边元素大于等于基准值,右边部分元素小于基准值,递归对两部分进行相同操作。这份代码的设计思路是构建一个简单的学生管理系统,能够实现学生数据的录入、奖学金评定以及不及格学生的查询功能。:在涉及动态内存分配的类中,拷贝构造函数和赋值运算符重载是必须的,否则会导致浅拷贝问题,引发资源竞争和内存泄漏。- scores:动态数组,存储学生的各科成绩,使用动态数组是为了灵活应对不同数量的科目。- 面向对象:通过 `Student` 类封装数据和行为,提高代码的可读性和复用性。

2025-03-24 14:18:43 1265

空空如也

空空如也

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

TA关注的人

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