- 博客(53)
- 收藏
- 关注
原创 并查集(Disjoint Set Union)详解:原理、优化与应用
摘要:并查集(Disjoint Set Union)是一种高效处理动态连通性问题的数据结构,支持查询和合并操作。本文详解其基本原理、两种核心优化(路径压缩和按秩合并),提供完整优化版代码实现,并介绍常见应用场景如连通分量统计、Kruskal算法等。通过路径压缩和按秩合并优化,并查集操作的时间复杂度可降至接近常数级(O(α(n))),是解决图论和连通性问题的利器。
2026-01-09 16:00:17
748
原创 汉诺塔问题
汉诺塔问题是一个经典的递归问题,要求将n个盘子从起始柱移动到目标柱,遵循每次只能移动一个盘子且大盘不能压小盘的规则。递归解法将问题分解为:先移动n-1个盘子到辅助柱,再移动第n个盘子到目标柱,最后移动n-1个盘子到目标柱。Python实现展示了这一过程,时间复杂度为O(2^n),空间复杂度为O(n)。该问题直观展示了递归思想,是学习算法的重要案例。
2025-12-29 21:06:53
458
原创 C++ 大数乘法
本文介绍了C++中实现高精度整数乘法的算法,通过模拟手工竖式乘法来计算大数相乘。算法采用字符串存储大数,逐位相乘并处理进位,最后转换为字符串输出。关键要点包括:1) 使用数组存储中间结果;2) 正确处理进位和移位;3) 特殊处理零值情况。文章提供了完整代码实现、复杂度分析(O(n*m))和多个测试示例,帮助理解如何处理超过内置整型范围的数值运算,适用于任意长度非负整数的乘法计算。
2025-11-04 20:46:15
497
原创 C++ 实现大数加法
本文介绍C++大数加法的实现过程,解决超出内置整型表示范围的大数相加问题。采用逐位模拟竖式相加的方法:从最低位开始,每位相加并处理进位,最终拼接结果。示例代码使用数组存储中间结果,处理不同长度数字时保留进位,并去除前导零。算法时间复杂度O(n),空间复杂度可优化为O(n)。关键点包括进位处理、不同长度数字的对齐以及结果转换。该算法是处理大数运算的基础,适用于竞赛和工程应用场景。
2025-11-04 18:15:46
528
原创 一个正整数n分解质因数
质数是指大于1的自然数中,只有1和它本身两个正因数的数。例如,2、3、5、7等都是质数。质数是构成所有整数的基本单位,每个大于1的整数都可以唯一地表示为若干质数的乘积,这就是所谓的算术基本定理。质数分解是一个简单而深刻的过程,通过将一个整数表示为若干质数的乘积,我们揭示了数字背后的基本结构。无论是在数学理论还是实际应用中,质数分解都是一个重要的工具。希望这篇博客能帮助你更好地理解质数分解的原理和实现,激发你对数学和计算机科学的兴趣。如果你有任何问题或建议,欢迎在评论区留言。
2024-05-28 15:30:18
1062
原创 杨辉三角问题
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
2024-05-08 22:31:48
277
2
原创 数学中常用的希腊符号大全(可直接粘贴食用)
当你写文章或资料的时候用到数学公式的很多符号,会很烦,可能需要一个个的去找,来我这里,直接赋复制粘贴拿去用吧> (^-^)
2023-12-13 16:48:32
4211
原创 串匹配算法——KMP (algorithm for KMP)
串匹配算法——KMP (algorithm for KMP)tips:我们知道字符串操作的不可避免的问题就是求出待匹配的字符串在主串中的位置(即首次出现的下标),目前已知的有两种主流的串模式匹配算法——暴力匹配和kmp模式匹配算法。学习本节内容需要预备的知识(可以自行上网查阅哦)字符串的表示字符串的前后缀(不同位置)KMP算法的原理什么是next数组什么是nextval数组(KMP的改进)summary:(discrepancy of two method)modera
2022-05-30 18:53:46
298
原创 C语言文件——字符读出与写入
C语言文件——字符读出与写入conclusion:the steps of read file步骤1.定义文件源2.fopen打开文件3.fgetc读取文件(按照字符读取)4.当读取的内容不是EOF文件尾的时候,重复步骤 35.关闭文件the code to validate above contents//字符读或写入文件#include<stdio.h>#include<stdlib.h>int m
2022-05-29 17:53:39
1645
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅