自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DevEco Studio安装

Windows系统DevEco Studio安装全攻略 本文详细拆解Windows 10/11系统下安装鸿蒙开发工具DevEco Studio的完整流程与解决方案。从安装前的硬件配置检查(需16GB内存+SSD)、JDK 11环境变量配置,到安装中的路径避坑(禁用中文/特殊字符)、权限处理,再到首次启动时的SDK配置技巧(切换国内镜像源)和模拟器Hyper-V问题修复。附环境校验方法及高频问题速查表,帮助开发者一次性搭建稳定开发环境,避免常见卡顿、闪退等兼容性问题。

2025-10-06 21:49:02 1542

原创 第四十天:成绩排序

本文介绍了如何用C++实现学生成绩排序功能。通过定义Student结构体存储学生姓名和成绩,编写自定义比较函数实现按成绩降序排列(成绩相同时按姓名升序)。核心算法使用标准库sort函数,时间复杂度为O(N log N)。代码示例展示了完整的输入、排序和输出过程,并附有样例分析。该方案适用于学生成绩管理等场景,能够高效处理最多20名学生的排序需求。

2025-10-05 23:18:35 893

原创 第三十九天:斐波那契数列

斐波那契数列是一个经典的数学序列,从0和1开始,后续每一项都是前两项之和。递归实现直观体现了数列定义,代码简洁优雅,但存在性能问题:时间复杂度为O(2^n),大数值计算效率低下;且递归深度过大会导致栈溢出。该数列在自然界、艺术和计算机科学中广泛应用,如植物生长模式、黄金分割比和算法设计等。递归解法适合教学展示,实际应用中应考虑优化算法。

2025-10-04 23:03:19 1350

原创 第三十八天:回文数组

本文介绍了将任意整数数组转换为回文数组的最少操作次数算法。该算法采用双指针遍历数组前半部分,计算对称元素差值,并分情况处理:常规对称对优先采用相邻元素联动操作,中间对称对则直接调整。算法时间复杂度O(n),空间复杂度O(1)。C++实现通过遍历计算差值并累加操作次数,最终输出最少操作数。该方案高效解决了回文数组转换问题。

2025-09-29 23:43:24 1137

原创 第三十七天:2025 图形绘制

本文介绍了一个用C++绘制特定规律图形的程序。该程序通过读取用户输入的高度h和宽度w,输出由"2025"循环填充且每行左移一个字符的矩形图案。核心算法使用双层循环:外层控制行数,内层根据当前行号确定起始位置,通过取模运算循环输出模式字符串中的字符。代码简洁高效,仅需15行即可实现功能。文章还提出了三种拓展思路:修改模式字符串、动态生成模式以及图形变换,为程序提供了更多可能性。这个练习既训练了基础编程能力,又培养了发现和实现规律性输出的思维。

2025-09-28 23:25:51 787

原创 第三十六天:寻找质数

本文探讨了质数的定义、特性及寻找特定序号质数的方法。首先介绍了质数的基本概念和数学特性,包括其无限性、唯一分解定理等。随后重点讨论了如何高效计算第n个质数的问题,提出了三种主要方法:暴力枚举法(逐个判断直至找到第n个质数)、优化试除法(利用已知质数列表加速判断)和筛法(埃拉托斯特尼筛法和线性筛法)。文章详细分析了每种方法的实现原理、时间复杂度及适用场景,并提供了对应的C++代码示例。最后针对大序号质数的查找问题,建议结合质数定理估算范围后采用筛法与试除法相结合的策略。这些方法在密码学、计算机科学等领域具有重

2025-09-26 23:46:51 1501

原创 第三十五天:移除元素

摘要 本文介绍了使用双指针技巧原地移除数组中特定元素的方法。通过快慢指针配合,快指针遍历数组寻找有效元素,慢指针记录有效元素位置和数量。算法时间复杂度为O(n),空间复杂度O(1),满足原地操作要求。示例展示了移除元素3的过程,最终数组前k位保留有效元素。这种技巧高效解决了数组元素筛选问题,同时保持元素相对顺序。

2025-09-25 23:06:27 767

原创 栈(Stack)

栈是一种LIFO(后进先出)的线性数据结构,主要操作包括入栈(push)和出栈(pop)。可通过数组(顺序栈)或链表(链式栈)实现:数组实现简单高效但大小固定,链表实现动态灵活但空间开销大。典型应用包括括号匹配、表达式求值、函数调用和浏览器历史记录。常见变体有最小栈、双栈队列等。栈操作时间复杂度均为O(1),但需注意栈溢出问题,尤其在递归中。数组实现缓存性能更好,链表实现更适合动态增长场景。

2025-09-23 23:39:53 1499

原创 第三十四天:矩阵转置

本文介绍了矩阵转置问题的C++实现方法。输入为n行m列的矩阵,输出其转置矩阵(m行n列)。算法核心是通过双重循环读取原矩阵元素后,交换行列索引顺序输出。代码使用100x100数组存储矩阵,外层循环控制转置矩阵行数(原矩阵列数),内层循环控制列数(原矩阵行数),确保相邻元素用空格分隔且行末无多余空格。示例展示了2×3和3×3矩阵的转置结果,验证了算法的正确性。

2025-09-22 23:20:00 1295

原创 时间复杂度与空间复杂度

时间复杂度是衡量算法执行效率的核心指标,表示算法执行时间随输入规模的增长趋势,用大O符号表示。常见复杂度包括:O(1)常数时间(如数组访问)、O(n)线性时间(如单循环遍历)、O(logn)对数时间(如二分查找)、O(nlogn)线性对数时间(如快速排序)和O(n²)平方时间(如双重循环)。复杂度对比为O(1)<O(logn)<O(n)<O(nlogn)<O(n²)。空间复杂度则衡量算法内存消耗,包括O(1)常数空间(如迭代计算)、O(n)线性空间(如递归调用)和O(logn)对数空

2025-09-21 23:25:43 877

原创 链表操作与反转

链表是一种线性数据结构,由分散存储的节点通过指针连接而成。节点包含数据域和指针域,单链表节点只有一个后继指针,双链表则包含前驱和后继指针。相比数组,链表在插入/删除操作上更高效(O(1)),但访问元素需要遍历(O(n))。链表操作包括插入、删除、查找和修改,典型应用场景包括链表反转和环检测(快慢指针法)。链表特别适合频繁增删的场景,但随机访问效率较低,需要根据具体需求选择合适的数据结构。

2025-09-21 23:09:27 805

原创 第三十三天:高精度运算

本文介绍了C++实现高精度加法和乘法的方法。针对200位以内非负整数,使用字符串存储数值并模拟竖式计算。加法通过逐位相加处理进位,乘法通过两层循环实现逐位相乘与累加,均使用vector存储中间结果并处理进位。最后去除前导零并输出,确保结果正确性。两种方法均通过字符与数字转换实现高效计算,适用于大整数运算场景。

2025-09-18 22:25:10 1136

原创 怎么永久删除.GamingRoot文件夹和XboxGames文件夹

摘要: C盘中的.GamingRoot和XboxGames文件夹因关联Xbox核心服务(如权限验证、游戏安装)被系统自动重建。永久删除需: 终止服务:通过PowerShell禁用XboxGipSvc等关联服务; 获取权限:用takeown和icacls突破系统保护,强制删除文件夹; 清理注册表:删除GamingServices相关项; 阻止再生:创建同名只读文件占用路径。 注意:此操作将导致Xbox功能失效,建议提前备份。若需保留功能,可改用系统设置更改默认安装路径。

2025-09-14 23:49:44 3616

原创 数组本身的深入解析

本文深入解析了C++数组的核心特性与使用技巧。重点包括:1)数组边界处理,指出C++默认不检查越界访问,可能导致数据损坏或程序崩溃,建议使用安全访问方法;2)数组传递时的退化问题,分析其指针特性及避免方法;3)动态数组管理,强调new[]/delete[]的配对使用;4)高效算法技巧,如双指针法、滑动窗口和原地修改。文章通过代码示例展示了数组越界的危险性、安全封装方法及实用算法实现,为正确处理数组操作提供了系统指导。

2025-09-04 23:52:58 1358 1

原创 数组基础及原理

C++数组是相同类型元素的有序集合,具有固定大小和连续内存存储特性。文章从定义、初始化、访问方式和内存布局四个方面详细介绍了数组的特性。数组定义需指定元素类型和个数,支持一维和多维形式;初始化方式包括完全、部分和自动推断大小;元素可通过下标或指针访问,需注意越界问题;内存布局上,数组元素连续存储,一维/多维都遵循"行优先"原则。此外还介绍了栈、堆和全局/静态数组的不同存储位置。掌握这些基础知识对理解更复杂的数据结构至关重要。

2025-09-01 23:57:59 1350

原创 第三十二天:数组

C++数组是一种存储相同类型元素的连续内存结构。数组定义时需指定类型和大小,如int arr[5]。初始化方式包括静态初始化(完全/部分)和C++11的动态初始化。元素通过0基索引访问,需防止越界。常见操作包括遍历、修改、查找和排序。多维数组如二维数组可用于矩阵表示。数组作为函数参数会退化为指针,函数不能直接返回数组但可返回指针或vector。内存管理分为栈上(自动释放)和堆上(需手动delete[])两种。数组优点是随机访问高效,缺点是大小固定、插入删除效率低。掌握数组对C++编程至关重要。

2025-08-31 23:41:47 1365

原创 第三十一天:数列求和取模

本文介绍了使用C++解决大数平方和取模问题的有效方法。通过数学公式推导,将1²+2²+...+n²转化为n(n+1)(2n+1)/6的形式,并利用扩展欧几里得算法计算6的乘法逆元来避免除法运算。关键点包括:1)使用递归实现扩展欧几里得算法求逆元;2)分步取模防止溢出;3)处理n可达1e18的大数情况。代码实现了多组输入处理,时间复杂度为O(1),适用于竞赛编程等场景。

2025-08-30 23:23:42 1111

原创 第三十天:世界杯队伍团结力问题

摘要:本文解决世界杯队伍组建问题,通过性格基因循环排列判断队员匹配性,使用并查集处理出战关系网络。算法首先检查字符串是否可循环相等,然后构建队员间的出战小组,统计各组内可达成一致的基因变体数量,最终输出最大团结力。关键步骤包括:循环字符串匹配、并查集管理出战关系、统计各组基因变体频率。该方法高效处理大规模数据,时间复杂度主要为并查集操作和字符串处理。

2025-08-28 23:20:05 1097

原创 第二十九天:重载、重写和覆盖

摘要:重载和重写是C++中实现多态的重要机制。重载允许同一作用域内定义多个同名函数,通过参数列表区分,用于处理不同类型数据;重写发生在继承体系中,派生类覆盖基类虚函数实现运行时多态。关键区别在于:重载是编译时多态,要求参数不同;重写是运行时多态,要求函数签名完全一致且基类函数为virtual。实际开发中应合理使用override和final关键字,并保持重载函数功能一致性。

2025-08-27 23:39:54 599

原创 第二十八天:多项式求值问题

本文介绍了多项式求值问题的C++解法。给定多项式xⁿ+xⁿ⁻¹+...+x²+x+1,输入x和n后,可利用等比数列求和公式计算其值。当x=1时结果为n+1;否则使用公式(1-xⁿ⁺¹)/(1-x)。代码实现中需注意浮点数精度和特殊情况处理(如x=-1)。文章还探讨了高精度计算(使用GMP库)和多项式在信号处理、密码学等领域的应用拓展。最终要求输出精确到小数点后两位的结果。

2025-08-22 23:21:10 1064

原创 第二十七天:游戏组队问题

摘要: 本文探讨了游戏组队问题,要求从n位同学中两两配对,满足颜值差距小于m的条件。基础解法采用排序和双指针法,时间复杂度O(n log n),空间复杂度O(n)。优化方向包括减少内存使用和多维条件扩展。文章详细解析了代码实现,并讨论了动态阈值变化等场景的适应性调整。该算法高效解决了最大组数计算问题,适用于大规模数据输入。

2025-08-20 22:48:26 1351

原创 第二十六天:static、const、#define的用法和区别

本文对比了C++中static、const和#define的用法和区别。static用于延长局部变量生命周期、限制全局变量作用域、定义类静态成员;const用于定义常量、修饰指针和成员函数,保证数据不可修改;#define用于宏定义和宏函数,在预处理阶段进行文本替换。三者主要区别在于:static和const有类型检查,#define无类型检查;static和const变量占用内存,#define不占内存;前两者可调试,#define调试困难。理解这些特性有助于合理选择使用场景,避免编程错误。

2025-08-19 20:04:47 917

原创 第二十五天:构造函数/析构函数/拷贝构造

摘要:本文介绍了C++中构造函数、析构函数和拷贝构造函数的核心概念。构造函数用于对象初始化,包括带参构造和默认构造,推荐使用初始化列表提高效率。析构函数负责资源释放,特别需要注意指针成员的内存管理。拷贝构造函数用于对象复制,需区分浅拷贝和深拷贝,尤其当类包含指针成员时,必须实现深拷贝以避免内存问题。三者的关系体现在对象生命周期管理上:构造函数和析构函数分别处理对象的创建和销毁,而拷贝构造函数则处理对象的复制,确保资源正确分配和释放。

2025-08-16 22:01:18 1288

原创 第二十四天:虚函数与纯虚函数

摘要:虚函数是C++实现多态性的核心机制,通过virtual关键字声明,允许派生类覆盖基类函数。纯虚函数(=0)强制派生类实现特定接口,使类成为抽象类。虚函数通过虚函数表(vtable)和虚指针(vptr)实现动态绑定,在运行时根据对象类型调用正确函数版本。虚析构函数确保派生类对象被正确释放,而纯虚析构函数需单独提供实现。多重继承时虚函数表更复杂,可能产生多个vptr。虚函数机制虽带来一定运行时开销,但为C++提供了强大的多态支持。

2025-08-15 23:51:26 1061

原创 第二十三天:求逆序对

本文介绍了计算序列中逆序对数量的三种方法:暴力解法、归并排序优化解法和树状数组解法。暴力解法通过双重循环统计逆序对,时间复杂度O(n²);归并排序解法则在排序过程中统计逆序对,时间复杂度优化至O(nlogn);树状数组解法利用离散化和树状数组实现高效统计。三种方法的空间复杂度均为O(n)。文章还探讨了逆序对在排序算法稳定性分析和数据相似性度量中的应用,并提供了完整的C++代码实现。

2025-08-14 23:59:14 1165

原创 第二十二天:指针与内存

这篇文章深入解析了指针和引用的本质区别与核心特性。指针是存储内存地址的变量,具有灵活指向和间接访问能力,但存在野指针、悬垂指针等风险;引用是变量的别名,必须初始化且不可变更绑定,更安全但灵活性较低。文章详细对比了二者的底层实现、语法语义和使用场景,包括内存管理、函数参数传递、多级嵌套等关键差异,并提供了典型应用案例和避坑指南,帮助开发者根据需求合理选择指针或引用。

2025-08-13 23:54:05 1221

原创 第二十一天:统计数字

本文介绍了一个C++编程题目,要求统计书页数字中0-9各数字出现的次数。题目给出了输入输出格式和约束条件(1≤n<1e9)。提供的解法使用双层循环遍历每个页码并统计数字出现次数。文章还详细讲解了数组的相关知识,包括声明初始化、元素访问、内存布局、遍历方法、多维数组以及C++标准库容器vector和array的使用。这些内容为理解和解决该问题提供了必要的基础知识和技术支持。

2025-08-11 21:45:25 992

原创 第二十天:余数相同问题

本文探讨了寻找使多个正整数除以同一除数x时余数相同的算法问题。对于三个数的情况,通过计算两数差值的绝对值的最大公约数来求解x的最小值;若公约数为1则从2开始逐个检查。扩展到多个数时,计算所有数对差值绝对值的公约数。还提供了求所有满足条件的x的方法,即找出公约数的所有因数。最后讨论了余数范围受限的情况,在求x时需额外验证余数是否在指定范围内。文中给出了相应的C++实现代码,展示了如何利用公约数性质和循环遍历来高效解决这类问题。

2025-08-09 21:45:19 1019

原创 第十九天:箱子归位

该题目要求计算将5x5矩阵中唯一的1移动到中心(2,2)位置所需的最少移动次数。通过遍历数组定位1的位置后,使用曼哈顿距离公式直接计算水平与垂直距离之和即可得到答案。这是典型的坐标定位问题,核心在于理解数组索引从0开始的特点,以及曼哈顿距离在网格移动场景中的应用。方法简单高效,时间复杂度为O(1)。扩展讨论中提到,若存在障碍物则需要使用BFS算法进行路径搜索。

2025-08-07 23:32:02 948

原创 第十八天:C++进制之间的转换

本文介绍了C++中不同进制(十进制、二进制、八进制、十六进制)的表示方法及相互转换技巧。重点讲解了C++17新增的二进制字面量表示法(0b前缀)以及各种进制转换的实现方法:包括十进制转其他进制的除基取余法(二进制、八进制、十六进制)和使用标准库(bitset、sstream)的方法;以及其他进制转十进制的加权求和法。这些转换方法在底层编程、硬件操作和数据处理等领域有重要应用,如内存寻址、色彩编码、文件权限设置等。通过代码示例展示了各种转换的具体实现方式。

2025-08-06 23:50:40 997

原创 第十七天:原码、反码、补码与位运算

本文介绍了计算机中表示有符号整数的三种方法:原码、反码和补码。原码直观但运算复杂,反码改善0的表示问题但运算仍不便,补码成为标准方法,解决了运算问题并简化逻辑。文章还详细讲解了六种位运算(与、或、异或、取反、左移、右移)的运算规则、代码示例和应用场景,如数据加密、快速乘除法等。这些底层运算在计算机系统中具有重要作用,能提高程序效率。

2025-08-05 22:44:26 1712

原创 第十六天:菲波那契数

本文介绍了C++实现斐波那契数列第k项的几种方法。基础解法使用循环迭代,时间复杂度O(k);递归解法虽直观但效率低,时间复杂度O(2^k);优化后采用记忆化搜索,用数组存储中间结果,将复杂度降至O(k)。文章通过代码示例对比了不同实现方式,特别分析了输入k=1或2时的边界处理必要性,并展示了递归调用树和记忆化优化原理。这些方法体现了从暴力递归到动态规划的优化思路。

2025-08-05 21:55:23 1133

原创 第十五天:买笔最优解

本文介绍了用贪心算法解决买笔最优解问题。通过优先购买单价最低的钢笔来最大化购买数量,同时确保花完班费。文章给出了C++实现代码,并分析了贪心算法的核心思想。进一步探讨了算法扩展场景:多类钢笔库存限制、输出所有可行方案、动态价格与折扣等情况,展示了如何结合回溯算法处理复杂需求。最后指出贪心算法在资源分配、调度等场景的普适性,强调其高效简洁的特点。该问题很好地体现了贪心策略"局部最优导致全局最优"的思想。

2025-08-03 22:50:39 1532

原创 第十四天:C++内存管理

本文系统介绍了C++内存管理的核心内容:首先剖析了C++四大内存区域(栈、堆、全局/静态区、常量区)的特性与使用场景;其次重点讲解了动态内存管理技术,包括new/delete操作符、智能指针及内存优化策略;然后阐述了内存对齐原理及结构体对齐规则;最后介绍了内存池与对象池的高效内存管理技术。文章通过建筑工地、图书馆等生活化比喻,深入浅出地解析了复杂的内存管理概念,并提供了实用代码示例,帮助开发者规避内存泄漏、悬空指针等常见问题,实现高效安全的内存管理。

2025-08-01 22:49:26 940

原创 第十三天:蛇形矩阵

本文介绍了C++实现蛇形矩阵的算法解析。通过创建n×n二维数组,按照偶数行从左到右、奇数行从右到左的规律填入连续数字。核心逻辑包括:1)使用vector初始化二维数组;2)根据行号奇偶性控制填充方向;3)维护全局计数器保证数字连续性;4)精确控制输出格式。时间复杂度为O(n²),空间复杂度O(n²),适用于n≤1000的情况。文章还扩展了螺旋矩阵的填充思路,并讨论了缓存优化等底层原理。该算法体现了条件分支与循环的巧妙结合,是二维数组操作的经典案例。

2025-07-31 23:05:28 1183

原创 第十二天:C++ 标准库函数分类总结

本文总结了C++标准库中的常用函数,分为四类: 数学函数(<cmath>):包括基本运算(abs/fmod)、指数对数(exp/log)、三角函数(sin/cos)、取整(ceil/round)等,提供数值计算支持。 字符串处理(<string>):提供字符串操作如length()、substr()、find()和replace()等。 容器操作(<vector>/<map>):支持动态数组(vector)的push_back()、insert()和erase

2025-07-30 23:54:33 1028

原创 第十一天:不定方程求解

本文探讨了求解不定方程ax+by=c的非负整数解组数问题。文章首先给出基础解法:通过枚举x的可能取值,计算剩余值检查y的合法性。然后引入贝祖定理判断解的存在性,并利用欧几里得算法优化求解过程。进一步给出了通解公式和扩展解法,可直接计算解的参数范围。最后将问题迁移到实际场景,如货币兑换和任务调度等资源分配问题。核心算法复杂度为O(c/a),通过数学推导可优化为常数时间求解。

2025-07-29 23:16:16 693

原创 第十天:字符菱形

本文介绍了两种用C++输出字符菱形的方法。第一种是基础硬编码方式,直接输出5行特定格式的字符;第二种采用循环嵌套,通过数学规律计算每行空格和字符数量。重点分析了菱形行数、空格分布和字符数量的对称规律,推导出通用计算公式。扩展部分给出了任意大小菱形的实现思路,通过用户输入参数n来控制菱形对角线长度(2n-1),并提供了相应代码示例。两种方法分别适合初学者理解和进阶编程练习,体现了从具体到抽象的编程思维过程。

2025-07-28 22:36:07 985

原创 第九天:糖果游戏

摘要:本文实现了一个C++程序,模拟5个小朋友围坐圆桌进行的糖果分配游戏。每个小朋友将自己的糖果均分三份(吃掉余数),保留一份,其余两份分给左右相邻的小朋友。程序通过数组存储糖果数,使用取模运算处理环形相邻关系,并控制输出格式为5位宽度。核心算法包括计算每份糖果数,更新当前和相邻小朋友的糖果数。该程序可扩展为任意数量小朋友的情况,体现了环形数据结构的处理方法和格式化输出技巧。

2025-07-27 23:15:28 1361

原创 第八天:交换值

本文介绍了三种在C++中交换两个变量值的方法:中间变量法、算术运算法和异或运算法。中间变量交换的本质是内存中存储数据的互换。中间变量法通用性强但需要额外空间;算术法无需临时变量但存在溢出风险;异或法高效但可读性差,仅适用于整数。文章还探讨了函数参数传递对交换的影响,指出引用传递才能实现真正的交换,并提及了动态内存分配场景下的指针交换注意事项。不同方法各有优缺点,应根据具体场景选择合适方案。

2025-07-26 23:13:43 1061

空空如也

空空如也

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

TA关注的人

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