- 博客(147)
- 收藏
- 关注
原创 KY84 | 二叉树
该程序计算二叉树中节点值不超过n的节点总数。给定起始节点m,通过队列进行层次遍历,将每个节点的左右子节点(2m和2m+1)入队并计数,直到所有满足条件的节点都被访问。最终输出符合条件的节点总数。程序的核心是使用队列实现的广度优先搜索算法,时间复杂度为O(n),空间复杂度为O(n)。输入为m和n,输出为满足条件的节点数量。
2025-07-05 16:31:31
109
原创 KY46 | 二叉树
摘要:该程序实现了一个求解两个正整数n和m的最近公共祖先的算法。通过不断将较大的数除以2,直至两数相等,此时得到的数值即为所求。程序采用循环结构处理多组输入,每次输出n和m的最近公共祖先。算法利用了二分查找的思想,时间复杂度为O(log(max(n,m)))。
2025-07-05 16:15:46
112
原创 KY211 | 二叉树遍历
摘要:本文实现了一个二叉树重建及后序遍历程序。通过前序遍历字符串和中序遍历字符串,递归构建二叉树结构,然后进行后序遍历输出。程序首先读取前序和中序遍历序列,调用recover函数递归重建二叉树,其中根据根节点在中序序列的位置划分左右子树。最后通过postOrder函数实现后序遍历输出。该算法实现了二叉树的经典重建及遍历功能。
2025-07-05 15:52:23
110
原创 KY187 | 哈夫曼树
摘要:该程序使用优先队列(最小堆)实现霍夫曼编码的贪心算法。首先读取输入数据并存入最小堆,然后不断取出最小的两个元素相加,将结果重新放入堆中,同时累加每次合并的代价。最终输出所有合并代价的总和,即为构造霍夫曼树的最小总成本。该算法时间复杂度为O(nlogn),适用于解决合并石子等最小化合并代价的问题。
2025-07-05 15:07:36
113
原创 KY101 | 计算表达式
摘要:该程序实现了一个简单的表达式计算器,采用栈结构处理运算符优先级。程序读取用户输入的字符串表达式,通过数字提取函数和运算符优先级判断,使用两个栈分别存储数字和运算符。当遇到低优先级运算符时,先计算栈顶高优先级运算,最终输出表达式结果。主要功能包括数字提取、运算符优先级判断、基本四则运算等。
2025-07-05 13:33:19
87
原创 KY179 | 堆栈的使用
摘要: 该程序实现了一个栈的基本操作,包括压入(Push)、弹出(Pop)和查看栈顶元素(A)。用户输入操作次数n,随后输入n次操作指令。'P'指令压入数字,'O'弹出栈顶元素,'A'显示当前栈顶元素(若栈空则输出'E')。程序使用C++标准库的stack容器实现,通过循环处理所有操作指令,并根据不同指令执行相应操作,最后返回0表示程序正常结束。
2025-07-05 12:13:32
70
原创 KY128 | 简单计算器
该程序实现了一个简单的四则运算计算器,支持加、减、乘、除运算。主要功能包括:解析输入表达式字符串,处理数字和运算符,使用双栈结构(数字栈和运算符栈)实现运算优先级处理。程序从标准输入读取表达式,遇到"0"时终止,输出保留两位小数的结果。核心算法利用运算符优先级比较来决定运算顺序,通过栈结构实现了表达式求值功能。
2025-07-05 11:48:50
76
原创 KY198 | 查找
该程序实现了一个二分查找算法。首先读取一个整数数组,用qsort进行排序。然后读取多个目标值,对每个目标值在排序后的数组中进行二分查找:比较中间元素,根据大小关系调整查找范围,找到则输出"YES",否则输出"NO"。程序通过标准输入输出处理多个测试用例,展示了排序与二分查找的经典组合应用。
2025-07-03 17:00:11
92
原创 KY53 | 打印极值点下标
该程序用于检测数组中的极值点(波峰或波谷)。输入一个整数k和k个元素的数组,程序会遍历数组,将满足极值条件的元素下标输出。具体判断逻辑包括:首元素若与次元素不同则输出;中间元素若同时大于或小于相邻元素则输出;末元素若与前元素不同则输出。程序通过逐元素比较相邻值来识别所有极值点位置。
2025-07-03 11:47:57
84
原创 KY26 | 查找学生信息
该程序实现了一个学生信息查询系统。首先输入学生数量n,然后录入每个学生的学号、姓名、性别和年龄信息。接着输入查询次数m,每次输入一个学号进行查询。程序会遍历学生数组,若找到匹配学号则输出完整学生信息,否则输出"No Answer!"。程序使用结构体存储学生数据,支持批量查询,直到读取结束。主要功能包括学生信息存储和基于学号的快速检索。
2025-07-03 11:32:25
77
原创 KY157 | 找x
该程序是一个C语言实现的数组查找程序。主要功能是:输入一个整数n,然后输入n个整数存储在数组中,再输入一个目标值x。程序会遍历数组查找x,若找到则输出其下标,否则输出-1。程序使用EOF控制循环,可以处理多组测试数据。核心逻辑是通过简单的线性查找实现目标值定位,时间复杂度为O(n)。程序简洁明了,适用于小规模数据的查找需求。
2025-07-03 11:11:00
92
原创 KY24 | 剩下的树
摘要:该程序计算移除指定区间后的剩余树木数量。输入包括道路长度L和移除区域数M,随后输入M个区间的起始和结束位置。程序初始化一个数组表示所有树木存在(值为0),然后将移除区间内的树木标记为1。最后统计未被标记的树木数量并输出。主要功能是通过遍历区间更新树木状态,然后计算剩余数量。程序持续处理输入直到EOF。
2025-07-03 11:00:01
107
原创 KY28 | 谁是你的潜在朋友
该程序用于查找数组中每个元素的潜在朋友数量。程序首先读取整数n和m,然后读取n个整数存入数组p。通过统计每个数字出现的次数,对于每个元素,若出现次数减1为0则输出"BeiJu",否则输出次数减1的结果。程序利用数组books记录数字频次,通过遍历数组p输出每个元素的潜在朋友数量。主要功能是统计并输出数组中每个数字的重复出现次数(不包括自己)。
2025-07-03 10:32:30
99
原创 KY93 | Simple Sorting
该程序实现了一个归并排序算法,用于对输入的整数数组进行排序并去除重复元素。程序主要包含三个函数:merge()用于合并两个已排序的子数组,mergeSort()递归地将数组分成更小的子数组进行排序,main()函数处理输入输出。程序首先读取输入的整数个数n和数组元素,通过归并排序将数组排序后,输出时不重复的元素。核心算法时间复杂度为O(nlogn),空间复杂度为O(n)。程序使用了分治策略,适合处理大规模数据排序问题。
2025-07-02 20:53:14
121
原创 KY135 | 统计同成绩学生人数
该程序统计输入数组中特定数值的出现次数。首先读取数组长度n,随后读取n个整数存入数组,再读取目标分数score。通过遍历数组,程序统计与score相等的元素个数并输出结果。程序采用循环结构,可以处理多组输入数据,直到输入结束。代码简洁高效,使用固定长度数组存储数据,适合处理不超过1000个元素的输入情况。
2025-07-02 20:32:52
74
原创 KY221 | 打印日期
该程序实现将给定年份和天数转换为对应的日期格式。主要功能包括:1)判断闰年函数isLeapyear;2)日期转换函数is_month_day,通过遍历月份数组计算对应月份和日期;3)主程序读取输入的年和天数,调用转换函数并格式化输出日期(自动补零)。程序处理闰年2月特殊情况,支持连续输入多组数据,输出格式为YYYY-MM-DD。核心算法是通过累计天数确定月份边界,适用于日期计算相关应用场景。
2025-07-02 20:24:29
77
原创 KY18 | 今年的第几天?
该程序实现计算给定日期是该年第几天的功能。主要包含两个函数:isLeapyear()判断闰年,is_today()计算天数。主程序通过循环读取输入的日期(年、月、日),调用is_today()计算并输出结果。is_today()函数通过遍历月份数组累加天数,对2月特别处理闰年情况。程序能正确处理不同年份(包括闰年)的日期转换,输出该日期在当年的天数序号。
2025-07-02 19:39:01
110
原创 KY107 | Day of Week
这篇C语言程序实现了计算给定日期对应星期几的功能。主要包含两个函数:isLeapyear()判断闰年,is_week_day()计算星期。程序通过累加从公元1年到目标年份的总天数,加上月份和日期的天数,最后对7取模得到星期几。输入格式为"日 月 年"(如"1 January 2000"),输出对应的星期名称。关键点包括闰年判断、月份字符串匹配和天数累加计算。程序采用模块化设计,使用字符串数组存储月份和星期名称,提高代码可读性。
2025-07-02 19:27:58
95
原创 KY110 | 日期差值
【摘要】该程序计算两个日期之间的天数差。程序包含两个主要函数:isLeapyear判断闰年,compute_days计算从公元0年开始到指定日期的总天数。主函数获取两个日期输入,分别计算总天数后求差值加1,输出最终结果。程序采用数组存储各月份天数,并考虑了闰年2月天数的特殊处理。
2025-07-02 18:48:44
209
原创 KY167 | 字符串内排序
摘要:本文展示了一个C语言实现的字符串归并排序程序。程序定义了一个最大长度为200的字符串数组,通过递归调用mergeSort函数将字符串拆分为更小的子数组,然后使用merge函数合并排序。主函数读取输入字符串,调用排序函数处理后输出结果。文章完整呈现了归并排序算法在字符串排序中的应用,包括分治策略、合并操作和递归实现等关键步骤。
2025-07-02 16:26:44
82
原创 KY144 | EXCEL排序
该程序实现了一个学生信息排序系统,能够根据学号、姓名或成绩对学生数据进行排序。程序采用归并排序算法,支持三种排序方式:1)按学号升序;2)按姓名升序(姓名相同则按学号);3)按成绩升序(成绩相同则按学号)。输入格式为n(学生数量)和c(排序方式),随后输入n条学生记录(学号、姓名、成绩)。程序输出排序后的结果,并支持多组数据输入。该实现具有高效稳定的排序性能,适合处理大规模数据(最大10万条记录)。
2025-07-02 16:09:54
416
原创 16. 最接近的三数之和
摘要:本文提出了一种解决「最接近的三数之和」问题的高效算法。通过先对数组进行排序,然后使用双重指针法遍历数组,寻找与目标值最接近的三个数之和。算法时间复杂度为O(n²),通过维护最小差值来优化搜索过程。该方法适用于每组输入只有唯一解的情况,能够快速返回最接近目标值的三个数之和。
2025-07-02 09:58:40
305
原创 KY1 | 成绩排序
摘要:该程序实现了一个基于归并排序的学生成绩排序系统。程序通过读取输入的学生姓名和成绩数据,根据用户指定的排序方式(1为降序,其他为升序)进行排序,并输出结果。主要包含merge()和mergeSort()两个核心函数,前者负责合并两个有序子数组,后者实现递归分治的归并排序算法。程序支持多组数据输入,每行输出排序后的学生姓名和成绩,具有较好的可扩展性和稳定性。
2025-07-02 09:58:14
108
原创 KY209 | 排序(归并排序)
该程序实现归并排序算法,主要包含三个函数:merge()用于合并两个有序数组,mergeSort()递归分割数组并调用merge()进行排序,main()处理输入输出。程序首先读取整数n和n个数据,通过归并排序对数组升序排列后输出结果。归并排序采用分治策略,时间复杂度为O(nlogn),使用辅助数组完成合并过程。程序循环读取输入直到EOF,每次处理一组数据并输出排序结果。
2025-07-01 11:01:01
81
原创 15. 三数之和(力扣)
该代码实现了求解三数之和的算法。主要思路是:1) 先对数组进行排序;2)使用双指针法遍历数组,寻找满足nums[i]+nums[left]+nums[right]=0的三元组;3)跳过重复元素以避免重复解。算法时间复杂度为O(n²),空间复杂度为O(n²)。关键点包括:排序预处理、双指针移动策略、以及处理重复元素的技巧。函数返回所有不重复的三元组,并通过指针参数返回结果数组的大小和列宽信息。
2025-06-22 13:28:34
95
原创 14. 最长公共前缀(力扣)
这篇文章介绍了一个寻找字符串数组最长公共前缀的C语言实现。算法首先将第一个字符串作为初始前缀,然后依次与其他字符串比较,在比较过程中不断缩短前缀长度:当字符不匹配时截断前缀。通过动态调整前缀长度,最终返回所有字符串共享的最长前缀。该实现时间复杂度为O(S),其中S是所有字符串的字符总数,空间复杂度为O(1)。代码使用动态内存分配,需要注意内存释放问题。
2025-06-22 10:39:46
87
原创 13. 罗马数字转整数(力扣)
摘要:这是一个将罗马数字转换为整数的C语言函数。该函数通过遍历输入的罗马数字字符串,将每个字符与预定义的罗马数字符号及其对应值进行比较和计算。当遇到数值递增的情况时,会进行特殊处理。最终返回转换后的整数结果。函数使用了两个数组分别存储罗马数字符号和对应数值,通过循环比较实现转换逻辑。
2025-06-22 10:09:02
114
原创 12. 整数转罗马数字
摘要:该程序实现了将整数转换为罗马数字的功能。通过定义罗马数字符号及其对应数值的映射表,采用贪心算法从大到小遍历数值表,不断拼接对应的罗马字符直至数值归零。程序使用动态数组存储结果,确保了内存安全。算法时间复杂度为O(1),空间复杂度为O(1),适用于1到3999的整数转换。
2025-06-22 09:38:08
490
原创 11. 盛最多水的容器(力扣)
摘要:该算法解决容器盛水问题,采用双指针法从两端向中间遍历。每次移动较短的边,计算当前区域面积并更新最大值。通过比较左右指针的高度,总是移动较小的指针以寻找可能的更大高度,从而在宽度减小时可能获得更大容量。时间复杂度为O(n),空间复杂度为O(1)。核心在于理解移动较短指针的策略可以优化搜索过程。
2025-06-22 09:05:14
318
原创 10. 正则表达式匹配(力扣)
摘要:本文解析正则表达式匹配的动态规划实现。核心是构建二维数组dp[i][j]表示字符串s[0..i-1]与模式p[0..j-1]的匹配状态。重点处理三种情况:(1)直接字符匹配时继承前序状态;(2)遇到''时考虑零次或多次匹配前驱字符;(3)其他情况设为不匹配。特别处理''的两种情况:dp[i][j-2]表示忽略前驱字符,当'.'或字符匹配时还需考虑dp[i-1][j]的多次匹配情况。初始化时需单独处理模式中'*'与空字符串的匹配关系。
2025-06-21 14:24:47
222
原创 8. 字符串转换整数 (atoi)(力扣)
这篇文章介绍了一个C语言实现的字符串转整数函数myAtoi()。函数首先去除输入字符串的前导空格,然后处理正负符号。核心转换功能由辅助函数aa()完成,它会提取数字字符并转换为长整型。主函数myAtoi()会检查转换结果是否在32位有符号整数范围内(-2147483648到2147483647),若超出则返回对应的边界值。该方法实现了基本的字符串到整数的转换,并考虑了数值范围限制的特殊情况。
2025-06-21 09:43:44
115
原创 7. 整数反转
摘要:该代码实现了一个整数反转函数,通过循环将输入整数x逐位反转。在反转过程中检查溢出情况,如果中间结果超过32位有符号整数范围(±214748364),则返回0。最终返回反转后的整数out。时间复杂度为O(n),空间复杂度为O(1)。
2025-06-20 17:03:53
412
原创 6. Z 字形变换(力扣)
本文展示了一个将字符串按Z字形排列后按行输出的C语言解决方案。函数通过计算字符位置与行号的对应关系,将原字符串重新排列。当行数为1时直接返回原字符串。算法使用双循环遍历字符串,通过模运算确定每个字符对应的行号,并按行号顺序收集字符。该方法时间复杂度为O(n^2),空间复杂度为O(n),适用于中等长度字符串的Z字形变换需求。
2025-06-20 16:18:30
75
如何反编译json文件
2023-12-27
关于#python#的问题:报错:TypeError: add_xaxis() missing 1 required positional argument: 'xaxis_data'怎么解决
2023-09-19
怎么解决Ida伪代码被改变?
2023-02-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人