- 博客(13)
- 收藏
- 关注
原创 Python + 模拟退火
4.降温过程:逐步降低温度(“冷却”过程)。温度的下降通常是指数型的,即每次降温的幅度逐渐减小。温度的降低意味着接受更差解的概率变小,从而收敛到一个最优解。1.初始状态和温度设定:从一个随机解开始,设定一个较高的初始温度(类似于物理过程中的温度)。5.终止条件:当温度降到某个较低值,或达到预定的最大迭代次数时,停止搜索,最终得到一个解。模拟退火的核心思想是通过模拟金属退火的过程,在搜索空间中逐渐寻找最优解。2.生成邻域解:通过小的随机变化生成当前解的邻域解(即稍微改变当前解的某些参数)。
2025-07-15 10:39:47
918
原创 探索子序列的奥秘:从基础概念到实际应用
从定义上讲,子序列是从给定序列中通过删除某些元素(也可以不删除任何元素),但不改变剩余元素相对顺序而得到的新序列。简单来说,假如有一个序列 [1, 3, 4, 5, 2] , [1, 4, 2] 就是它的一个子序列,因为它是通过选取原序列的第 1、3、5 个元素得到的;[3, 5] 同样是子序列,选取的是原序列的第 2、4 个元素。特别地,空序列也是任何序列的子序列,原序列本身也是自己的子序列。子序列与子数组(连续子序列)有着明显区别。
2025-06-29 12:02:06
574
原创 全排列算法解析与实现
本文介绍了全排列的定义及其实现方法。全排列是指将n个不同元素按顺序排列的所有可能方式。文章重点讲解了三种实现方法:回溯法(递归实现)、交换法(回溯变种)和字典序法(迭代实现),并提供了相应代码示例。其中回溯法通过"选择-递归-回溯"逻辑生成排列,交换法采用元素交换策略,字典序法则基于字典序规则迭代生成。最后列举了全排列在组合优化、密码学、排序算法、游戏开发和算法测试等领域的应用场景。这些方法为解决各类排列组合问题提供了有效工具。
2025-06-27 13:13:06
805
原创 快速幂算法:高效计算大数幂的秘诀
快速幂是一种高效计算幂次的算法,通过将指数二进制分解,将时间复杂度从O(n)降至O(logn)。其核心思想是利用指数二进制位处理,在每次迭代中将底数平方并根据二进制位决定是否累乘。应用场景包括递推数列、大数模幂运算(如a^b mod p)等。算法实现通过循环分解指数,逐位判断并进行条件乘法运算,显著提升计算效率,特别适合处理超大指数(如10^18)的幂运算。
2025-06-17 18:58:40
236
原创 算法技巧类(自用)
Gosper’s Hack 尤其适用于需要生成所有组合的问题,例如在组合数学、动态规划和算法设计中。x = 0101110 ~x(x的每个bit位取反) = 1010001 -x(x的补码) = ~x + 1 = 1010010。: 在一组元素中,如果每个元素都出现两次,只有一个元素出现一次,可以利用异或运算来找到这个唯一元素。新的组合数 = 左半部分 | 右半部分 = ((x ^ (x + lb)) / lb >> 2) | x。如果最后一位是1,表示这个数是奇数。
2025-02-28 18:03:19
575
原创 前缀和 + hash表
核心其实就是判断 当前 sum 是否在之前存在过(通过hash表来实现) 然后根据题意来判断 结果的更新方式。4、hash表:key => sum , value => 当前前缀和的个数(下标)5、比较当前sum和之前的sum(hash[sum])的关系。子数组是数组中元素的连续非空序列。2、根据题意设置hash[0]3、计算前缀和sum。
2024-10-27 16:26:01
323
原创 C++学习笔记(自用)
是 C++ 标准库中的一个算法,它被用来重新排列序列中的元素,生成该序列的下一个(字典序的)排列。是一个字符串函数,用于获取指定位置开始的指定长度的子字符串, substr() 函数返回一个新的字符串,表示从原字符串中提取出的子字符串。它的功能类似于逻辑运算中的“与”操作,即所有元素都为真时,返回真;.begin() 和 .end() 是 C++ 中用于获取容器(比如字符串、数组、向量等)的起始和结束迭代器的方法。,这两个成员函数对于std::string类型来说是等效的,它们都返回字符串中字符的数量,
2024-10-13 16:42:31
867
原创 2096. 从二叉树一个节点到另一个节点每一步的方向
给你一棵的根节点root,这棵二叉树总共有n个节点。每个节点的值为1到n中的一个整数,且互不相同。给你一个整数startValue,表示起点节点s的值,和另一个不同的整数destValue,表示终点节点t的值。请找到从节点s到节点t的,并以字符串的形式返回每一步的方向。每一步用字母'L''R'和'U''L'表示从一个节点前往它的节点。'R'表示从一个节点前往它的节点。'U'表示从一个节点前往它的节点。请你返回从s到t每一步的方向。
2024-09-23 20:47:53
760
原创 前序中序画树、后序中序画树、前序后序画树
说白了前序、中序、后序,就是看你在遍历树的时候是选择将根放在前、中、后的哪个位置像前序就是将根放在左右子树前面。
2024-09-22 16:39:17
1206
1
空空如也
vscode 中无法连接mysql
2025-03-06
23级软工三本考研规划
2024-09-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人