- 博客(232)
- 收藏
- 关注
原创 分治法-真假硬币区分
这段代码实现了通过分治法在一组硬币中找出假币(重量不同)的下标。主要逻辑是:若只剩两枚硬币,直接比较返回较轻者;对于偶数个硬币,将数组分为两部分比较总重量,递归处理较重部分;对于奇数个硬币,先排除中间元素后比较两侧总重量,若不等则递归处理较重部分,若相等则中间元素为假币。示例中数组{1,2,2,2,2}的输出结果为假币下标0(首元素1较轻)。该算法通过不断缩小查找范围高效定位假币,时间复杂度为O(log n)。
2026-06-10 19:43:48
183
原创 贪心算法-背包问题
该程序实现了贪心算法解决分数背包问题。首先定义了5种物品的价值和重量数组,计算单位重量价值后通过归并排序按单位价值降序排列。然后采用贪心策略选择物品:优先装单位价值高的物品直到无法完整装入,最后对剩余容量按比例装入部分物品。程序输出排序前后的物品信息、最大总价值(65.0)以及解方案数组([1.0,1.0,0.0,0.0,0.8])。关键步骤包括归并排序实现和贪心选择策略,最终在背包容量100的限制下求得最优解。
2026-06-05 16:27:09
430
原创 动态规划-0-1背包问题
本文实现了一个经典的0-1背包问题动态规划解法。程序定义了4个物品(N=4)和背包容量5(M=5),每个物品有对应的重量W和价值v。通过构建二维数组f[N+1][M+1]来存储子问题的最优解,采用双重循环计算每个子问题的解:若不选当前物品则直接继承上一行解;若背包容量足够则比较选/不选当前物品的价值,取较大者。最终输出背包能装的最大价值7,并打印出完整的动态规划表格。该算法时间复杂度为O(NM),空间复杂度为O(NM)。
2026-06-04 16:50:37
23
原创 回溯法-N皇后
本文展示了N皇后问题的两种解法:非递归和递归方法。非递归解法使用回溯算法,通过循环和栈模拟递归过程,当检测到冲突时回溯调整皇后位置,找到所有合法解后输出。递归解法同样基于回溯思想,通过递归调用尝试每行的可能位置,利用check函数验证位置合法性,最终输出所有解。两种方法都通过q数组记录每行皇后的列位置,使用abs(i-j)==abs(q[i]-q[j])判断对角线冲突,体现了典型的回溯算法思想,其中非递归方法通过显式控制回溯步骤,递归方法则更简洁直观。
2026-06-02 17:10:02
175
原创 分治法-归并排序
本文展示了一个C语言实现的归并排序算法。代码包含三个主要函数:MergeSort用于递归分割数组,Merge用于合并两个有序子数组。在Merge函数中,通过创建临时数组L和R存储子数组元素,并引入INT_MAX作为哨兵值确保合并过程正确。主函数演示了对数组{4,2,6,1,7,8}的排序过程,最终输出有序序列。该实现体现了分治策略的核心思想:分解、解决和合并,时间复杂度为O(nlogn)。
2026-06-02 16:18:00
164
原创 C++二进制读写(ifstream,ofstream,write函数,read函数)
【代码】C++二进制读写(ifstream,ofstream,write函数,read函数)
2026-03-01 11:53:43
151
原创 ifstream和ofstream分别是什么
它们都继承自基础的类,遵循 C++ 流操作的统一规则,是处理文件最常用的工具。使用这两个类前,必须包含头文件:2. ofstream(写文件)示例用于创建 / 打开文件并写入内容,常见模式:3. ifstream(读文件)示例(逐行读,getline)用于打开文件并读取内容,常见读取方式:逐行读、逐个字符读、按类型读。 是输入文件流,核心作用是从文件读取数据,常用操作:打开文件、逐行读、按类型读、关闭文件。 是输出文件流,核心作用是向文件写入数据,常用操作:打开文件(可
2026-02-28 14:35:25
418
原创 已知一模板的不完整声明是:template<class T,int SIZE> T valueOf(T sq[ ][SIZE]):其中valueOf计算并返回SIZExSIZE的行列式sq的值。
【代码】已知一模板的不完整声明是:template<class T,int SIZE> T valueOf(T sq[ ][SIZE]):其中valueOf计算并返回SIZExSIZE的行列式sq的值。
2026-02-27 21:38:20
230
原创 写一个函数模板,其功能是计算并返回数组d中size个元素的平方和,试设计这个函数模板
【代码】写一个函数模板,其功能是计算并返回数组d中size个元素的平方和,试设计这个函数模板。
2026-02-27 17:56:11
409
原创 设计函数模板SWAP,它可以用来交换任意两个类型相同对象变量的值
摘要:本文展示了一个使用C++模板实现的通用交换函数SWAP。该函数通过模板参数T支持任意数据类型的交换操作,包括int、float和char等。程序通过三个测试案例验证了函数的通用性,分别交换了整数、浮点数和字符类型变量,并输出交换前后的值以验证结果。代码结构清晰,包含必要的注释说明,展示了模板函数在实现类型无关操作时的优势。
2026-02-27 17:32:06
258
原创 核心匹配规则:普通函数,模板函数(隐式),模板函数(显式),以及模板特化
C++函数调用优先级规则解析:普通函数优先级高于模板函数,显式模板参数强制调用模板版本。当调用MAX(a,b)时优先匹配普通函数,而MAX<float>(a,b)则强制调用模板实例化。使用模板特化可统一逻辑,避免普通函数与模板的匹配混淆。核心在于理解普通函数>隐式模板>显式模板的调用顺序,这是C++重载解析的重要规则。
2026-02-27 15:10:36
511
原创 类通用模板与类的部分特化和全特化模板
类模板特化分为通用版和全特化版:通用模板通过template<typename T>定义,适配所有未特化的类型;全特化版通过template<>标记,针对特定类型(如float)定制实现。实例化时,编译器优先匹配特化版本,未找到则使用通用模板。特化版可完全独立修改成员函数和构造方法,但必须与通用模板参数匹配。示例中Array<int>调用通用模板,而Array<float>调用特化版本,体现"特化版>通用版"的优先级原则。
2026-02-27 15:10:15
699
原创 设计并实现日期类Date,它至少包含下列特性:
本文实现了一个Date类,主要功能包括:1)支持默认日期(1949.10.1)和指定日期初始化;2)支持从输入流读取日期(格式为"年.月.日");3)支持日期输出;4)实现日期比较运算符(==, !=, <, <=, >, >=);5)支持日期增减操作(++, --, +=, -=);6)支持日期与天数相加减运算(+,-)。类中还包含日期合法性校验、闰年判断等功能,并通过调整函数处理跨月跨年的日期计算。main函数演示了各类功能的使用方法。
2026-02-23 12:39:03
260
原创 大学有这样几类人员:学生、教师、职员和在职读书的教师。给出这几类人员的类描述。
本文展示了一个C++类层次结构的设计实现,包含Person基类和多个派生类。基类Person封装了人员基本信息(年龄、姓名、身份),并定义了虚函数show()以支持多态。派生类Student、Teacher、Employee和TeacherWithStudy分别扩展了学历、教学科目、工作单位等特有属性,并重写show()方法展示完整信息。代码优化包括:1) 使用英文命名提高可读性;2) 字符串默认值设为空字符串;3) 添加override关键字明确虚函数重写;4) 增加参数合法性检查。main函数通过基类指
2026-02-05 14:21:39
119
原创 建立普通的基类Building,用来存储一座楼房的层数、房间数以及它的总平方米数。建立派生类House,继承Building,并存储下面的内容:卧室与浴室的数量。另外,建立派生类Office,继承Bu
该代码实现了一个建筑类的继承体系,包含基类Builing和两个派生类House(住宅)和Office(办公室)。Builing类包含层数、房间数和总面积属性,并提供数据验证和显示功能。House类新增卧室和浴室数量,Office类新增灭火器和电话数量,两者都重写了show()方法以显示各自特有属性。主函数通过基类指针调用虚函数show(),实现多态性输出不同建筑类型的完整信息。程序展示了面向对象的封装、继承和多态特性。
2026-02-05 13:49:13
407
原创 编写一个程序输入一个n×n的矩阵,求出两条对角线的元素值之和
该程序实现了一个计算n×n二维矩阵两条对角线元素之和的功能。首先动态分配内存创建n×n矩阵,然后通过用户输入填充矩阵元素。程序分别计算正对角线(mat[i][i])和反对角线(mat[n-1-j][j])的元素和,最后输出两者之和。该代码展示了动态内存分配、二维数组操作和基本算法实现。
2025-12-11 09:27:22
144
原创 雪景艺术绘制
这段代码使用Python的turtle模块绘制了一个冬季雪景图。程序首先绘制100个随机分布、不同颜色和大小的雪花图案,每个雪花由8-12个花瓣组成。接着绘制地面效果,用随机大小和深浅的灰色线条模拟积雪。整个场景以黑色为背景,通过随机坐标和颜色变化创造出自然的视觉效果。代码利用了turtle的绘图功能和随机数生成,最终呈现出一个生动的数字雪景画面。
2025-11-19 17:12:29
141
原创 体育竞技分析实例
该程序模拟两个选手A和B的竞技比赛,通过输入各自能力值(0-1之间)和比赛场次进行胜负分析。程序包含两种实现方式:第一种使用概率比值计算得分概率,第二种直接使用能力值作为获胜概率。改进版本增加了比赛结束条件(需领先2分以上)和百分比显示功能。主要函数包括单场比赛模拟(sinOneGame)、多场模拟(sinNGame)和结果输出(printWin)。程序最终会输出选手的胜场数和获胜比例。
2025-11-13 11:52:14
167
原创 编写一个程序,读取一个Python源代码文件,将文件中所有除保留字外的小写字母换成大写字母,生成后的文件要能够被Python解释器正确执行。
本文介绍了一个Python脚本功能,该脚本能够读取输入文件中的代码,识别并转换其中的关键字。程序首先读取文件内容,然后使用keyword.kwlist检测Python关键字,将非关键字的标识符转换为大写形式。通过示例演示了转换效果:保留关键字(如def、return)原样输出,而将非关键字(如hello、message)转为大写。最后将处理结果写入输出文件,并展示了转换前后的代码对比。该功能可用于代码格式化或语法分析场景。
2025-11-12 18:21:27
348
原创 编写一个程序,生成一个10x10的随机矩阵并保存为文件(空格分隔行向量、换行分隔列向量),再写程序将刚才保存的矩阵文件另存为CSV格式,用Excel或文本编辑器打开看看结果对不对。
本文演示了如何生成随机矩阵并转换文件格式。首先使用Python随机模块生成10×10的0-99随机整数矩阵,保存为空格分隔的txt文件。随后将txt文件转换为逗号分隔的CSV格式。代码实现了两种矩阵存储格式的转换,可作为数据处理的基础示例。
2025-11-12 16:12:17
171
原创 假设有一个英文文本文件,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母。
这段Python代码演示了如何读取并处理文本文件中的英文字符大小写转换。程序首先打开"new_b.txt"文件,读取内容后遍历每个字符:将小写字母转为大写,大写字母转为小写,其他字符保持不变。最后将所有处理后的字符重新组合成字符串并输出。代码使用了文件上下文管理(with语句)确保资源释放,以及列表推导式进行高效的字符处理,实现了对英文字符的大小写互换功能。
2025-11-12 15:10:47
188
原创 输入一个文件和一个字符,统计该字符在文件中出现的次数。
这段Python代码实现了一个简单的字符统计功能。程序首先提示用户输入文件名和要统计的字符,然后读取文件内容并计算指定字符出现的次数。代码使用了try-except块来处理文件不存在等异常情况,并提供了两种统计方法:直接使用count()函数或通过循环逐个字符比较。最后程序会输出统计结果或错误信息。该脚本适用于快速统计文本文件中特定字符的出现频率。
2025-11-12 14:46:22
134
原创 重复元素判定。编写一个函数,接收列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值。同时编写调用这个函数和输出测试结果的程序。
本文展示了一个检测列表中重复元素的Python程序。通过定义text_set()函数,利用集合(set)特性判断列表是否存在重复元素,同时保留原列表不变。测试用例包含数字和字符串列表,分别输出检测结果和原列表完整性验证。程序运行后会打印每个测试列表的重复检测结果,并确认原列表未被修改。该实现简洁高效,时间复杂度为O(n),适用于各种类型元素的列表检测。
2025-11-10 22:42:50
173
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅