- 博客(25)
- 收藏
- 关注
原创 L1-011 A-B - 20 分
本文介绍了天梯赛L1-011 A-B字符串处理题的解题方法。题目要求从字符串A中删除所有出现在字符串B中的字符,保留原始顺序。文章分析了两种实现方式:C语言使用字符数组和getchar()逐字符读取,手动添加结束符;C++则利用string类和getline()简化操作。核心思路是通过标记数组(O(1)时间复杂度)快速筛选字符,并强调正确处理带空格的整行输入。对比了两种语言的实现差异,指出C++语法更简洁高效。最后总结了"标记-过滤"的通用解题模板和ASCII字符处理的注意事项,为算法竞
2026-02-06 10:10:18
669
原创 L1-009 N 个数求和 -20分
本文解析了L1-009 N个数求和的解题思路,重点处理分数形式的输入输出。核心在于分数运算:通过辗转相除法求最大公约数(GCD)进行约分,利用最小公倍数(LCM)实现通分累加。使用long long类型存储分子分母,每次累加后立即约分防止溢出。输出时按整数部分、分数部分拆分,处理三种格式情况。提供了纯C和基础C++两种实现,前者直接计算,后者封装LCM函数更清晰。关键技巧包括:及时约分避免溢出、正确处理负数符号、按规则格式化输出。这道题考察了分数运算的基本功和数值处理的严谨性,是学习有理数运算的经典案例。
2026-02-05 11:17:11
638
原创 L1-006 连续因子 -20分
本文解析了天梯赛L1-006连续因子题目的解题思路和两种实现方法。题目要求找出正整数N的最长连续因子序列,重点考察因子分解、连续序列查找和数值溢出规避。文章详细分析了题目特征、输入输出格式,并提供了纯C语言和基础C++两种解法。关键思路包括:通过sqrt(N)优化遍历范围,使用long long防止数值溢出,质数情况的特殊处理,以及如何保证输出最小起始数序列。两种实现方式对比显示,C++版本更简洁且能彻底规避溢出问题。文章最后总结了核心算法逻辑和常见调试注意事项,对备赛学习者具有实用参考价值。
2026-02-04 12:17:48
1386
原创 L1-005 考试座位号 -15分
摘要 本文分析了L1-005考试座位号题目的两种解法。题目要求根据试机座位号快速查询考生的准考证号和考试座位号。第一种解法采用纯C语言实现,使用多个数组存储数据并通过双层循环匹配查询,时间复杂度为O(M*N)。第二种解法采用C++实现,利用"试机座位号=数组下标"的映射关系,将查询时间复杂度优化为O(N+M),效率提升显著。文章比较了两种解法的数据结构设计、查询效率差异和实现细节,强调了"键值映射"思维在优化查询效率中的重要性,并指出结构体封装和数组下标设计等关键实现
2026-02-03 13:04:05
608
原创 图书馆达人
题目摘要:郑州轻工业大学编程题7-4"图书馆达人"要求统计学生进入图书馆次数并输出最高频次学生。输入为多行姓名(以***结尾),输出按录入顺序显示所有最高频次学生及其次数。解题思路:1)数组存储姓名并统计频次;2)双层循环计算每个姓名出现次数;3)找出最大频次;4)按录入顺序去重输出。关键点:使用数组简化存储,布尔数组标记已输出项避免重复,适合入门级统计问题。拓展思考:大数据量时可改用vector和map优化效率。
2026-02-02 13:37:08
596
原创 病毒感染检测 - 15 分
本文介绍了一种解决病毒DNA环状序列匹配问题的高效方法。题目要求检测病毒DNA的任意环状排列是否出现在患者DNA序列中。核心思路是利用C++的string::substr()生成所有环状排列,再通过string::find()进行子串匹配。关键步骤包括:1)多组输入处理;2)环状序列构造;3)边界优化(当病毒DNA更长时直接判定未感染)。文章提供了完整C++实现代码,并分析了使用标准库函数的优势,包括简洁性、高效性和易读性。此外,还讨论了可能的优化方向,如手动构造环状序列、去重处理以及更高效的子串查找算法。
2026-01-31 18:44:10
586
原创 通讯录排序 - 15分
本文介绍了一道C++通讯录排序题,重点考察结构体数组的冒泡排序实现。题目要求将输入的n个朋友信息(姓名、生日、电话)按年龄从大到小排序输出。解题思路包括:使用结构体存储关联数据,将生日yyyymmdd格式转换为数值比较,通过冒泡排序完整交换结构体变量确保数据关联性,最后按要求格式输出。关键点在于正确理解生日数值与年龄的关系,以及在排序时交换整个结构体而非单个字段。文章提供了详细注释的C++实现方案,帮助初学者掌握结构体与排序算法的结合应用。
2026-01-30 17:25:15
611
原创 开放定址法 - 20分
本文介绍了使用开放定址法实现散列表插入的解题思路。题目要求将给定键值插入长度为L的散列表,采用除留余数法计算初始地址,线性探查解决冲突,并实现去重处理。文章详细讲解了散列表初始化、除留余数法原理、环形探查实现等核心要点,并强调了去重处理和有序输出的重要性。通过C++代码示例展示了关键逻辑实现,最后总结了调试易错点和学习重点。该解法适用于PTA/天梯赛等编程竞赛中关于散列表的基础题目。
2026-01-30 17:10:39
586
原创 L1-017 到底有多二 - 15 分
摘要: 本文解析天梯赛L1题目《到底有多二》,针对超长数字(≤50位)的字符串处理与多条件加权计算提出解法。核心思路包括:用字符数组存储数字以避免溢出,统计有效位数和'2'的个数;通过末位字符判断奇偶性,结合负号标记实现1.5倍或2倍加权;浮点数转换保证精度,最终输出百分比格式(保留两位小数)。提供C语言和基础C++两种实现,对比语法差异,强调字符转数字(c-'0')、独立条件判断及格式化输出(%%)等关键技巧,并总结易错点(如整数除法精度丢失)。适合巩固字符串处理与数值计算基础。
2026-01-29 17:14:40
928
原创 L1-030 一帮一 - 15分
摘要:本文分析了天梯赛L1-030"一帮一"题目,重点探讨了两种实现方式。题目要求将未分组学生按名次顺序与异性配对输出,考察双指针和标记数组的应用。基础C++使用平行数组和string存储数据,纯C采用结构体和字符数组。核心思路是通过标记数组避免重复配对,采用双层遍历实现"最前-最后"匹配逻辑。文章对比了两种写法的差异,并总结了调试易错点,为算法学习者提供了配对类题目的通用解题技巧。
2026-01-29 17:05:09
689
原创 L1-023 输出 GPLT - 20分
摘要:本文解析天梯赛L1-023输出GPLT题目,要求筛选字符串中的G/P/L/T字符(不区分大小写),并按固定顺序循环输出。提供C和C++两种解法:C语言使用字符数组和数组计数,C++采用string容器和独立变量计数。核心思路是遍历统计字符数量后,通过轮询检查实现顺序输出。两种方法时间复杂度均为O(n),C++代码更简洁。文章强调不区分大小写的处理、循环输出逻辑等考点,并比较两种语言的实现差异,适合初学者理解基础字符串处理技巧。(149字)
2026-01-28 17:08:19
823
原创 到底是谁没出现 - 20 分
摘要:本文介绍一道天梯赛经典练习题——寻找缺失的最小正整数。通过分析题目要求,提出三步解题思路:筛选正整数、集合去重、顺序查找。给出C++简洁解法,利用set容器自动去重和快速查找的特性,从1开始依次检查首个缺失的正整数。文章详细解析了集合使用、边界处理等关键点,并总结此类问题的通用解题模板,特别适合C++新手学习基础算法和数据结构应用。解题时间复杂度为O(n),能高效处理题目规模。
2026-01-28 16:53:41
965
原创 数据结构与算法题目集(中文)7-52 两个有序链表序列的交集 - 20分
摘要:本文解析浙大数据结构题7-52(有序链表交集),提出基于vector与双指针的简洁解法。核心思路:1) 用vector存储非降序输入序列;2) 双指针同步遍历两序列(O(n+m)时间复杂度),相等时存入交集;3) 严格处理输出格式(首元素无前缀空格,空集输出NULL)。相比手动链表,vector实现更高效且规避内存管理,适合新手。关键优化包括输入加速(ios::sync_with_stdio)和输出边界控制。拓展讨论指出,通过判断s3.back()可处理含重复元素的场景。该解法凸显有序序列双指针遍历的
2026-01-26 14:37:41
1130
原创 数据结构与算法题目集(中文)7-1 最大子列和问题(20 分)
本文介绍了求解最大子列和问题的简化版Kadane算法。该算法通过维护当前子列和(current_sum)和全局最大和(max_sum)两个变量,在遍历数组时累加元素,当current_sum为负时重置为0,否则更新max_sum。算法时间复杂度O(n),空间复杂度O(1),能高效处理10万级数据。关键点在于初始化max_sum为0可自动处理全负数情况,使用基础C++语法即可实现。文章通过"存钱"类比帮助理解算法逻辑,并展示了样例执行流程,适合新手掌握这一经典问题的高效解法。
2026-01-26 14:13:40
713
原创 L1-028 判断素数 - 10分
本文分享了L1-028判断素数题的解题思路与两种实现方式。重点讲解了素数判断的核心逻辑:边界处理(1、2、偶数等特殊情况)、平方根优化和奇数遍历等效率优化技巧。对比了C语言(多组输入)和C++(单组输入)的语法差异,包括输入输出、数学库调用等实现细节。文章强调算法优化的核心在于减少无效运算,并通过边界测试用例验证代码正确性。提供了一套适用于编程竞赛的素数判断通用模板,帮助学习者掌握基础算法并灵活运用不同语言实现。
2026-01-25 15:12:56
690
原创 L1-070 吃火锅 - 15 分
本文介绍了天梯赛L1-070"吃火锅"题的解题思路与多语言实现。题目要求统计朋友信息中包含关键词"chi1huo3guo1"的情况,需要处理整行输入、字符串匹配和状态记录。文章详细分析了纯C语言和基础C++两种实现方式,比较了它们在字符串处理、输入输出等方面的差异,并总结了核心解题技巧和常见错误点。重点包括:整行输入的处理方法(C用scanf格式化,C++用getline)、子串查找函数(strstr/find)、首次出现行号的记录逻辑等。文章适合编程新手学习字符串处
2026-01-25 14:44:09
986
原创 L1-050 倒数第 N 个字符串 - 15 分
本文解析了天梯赛L1-050题目"倒数第N个字符串"的解题思路。题目要求将长度为L的小写字母序列视为26进制数,'a'对应0,'z'对应25,倒数第N个字符串等价于正数第(26^L-N)个。解题关键点包括:用循环累乘计算26^L避免pow函数精度问题;将26进制数转换为字母字符串;通过下标计算或字符串反转保证正序输出。文章比较了纯C语言和基础C++两种实现方式,指出C++的string类处理更简洁。该题考察了进制转换、数学建模和字符串处理能力,是典型的问题转化思维训练。
2026-01-24 16:39:56
894
原创 L1-018 大笨钟 - 10 分
摘要:L1-018大笨钟考察时间格式解析与逻辑模拟。解题需拆分输入时间为整型变量,判断敲钟时段(12:01-23:59),计算敲钟次数(24转12小时制),并格式化输出。关键点在于边界条件处理(如12:00不敲钟),C语言用scanf/printf更简洁,C++需处理前导0格式。本题训练分支判断和输入输出能力,是基础编程的典型例题。(150字) 核心要点: 时间拆分与整型存储 敲钟时段判断(12:00与12:01差异) 24转12小时制的两种实现 C/C++格式化输出差异 边界验证与极端案例测试
2026-01-24 16:30:49
652
原创 L1-021 重要的话说三遍 - 5分
本文介绍了天梯赛L1-021题的三种解法,重点分析了输出控制和循环逻辑的实现。题目要求无输入,仅需输出三遍指定字符串"I'mgonnaWIN!",每遍独占一行。提供了纯C语言循环版、基础C++直接输出版和循环版三种实现方式,对比了C/C++语法差异,包括输出语句、循环结构和换行控制。特别强调了调试易错点(如字符串拼写、多余字符、换行符缺失)和循环的核心价值——代码复用。通过这道基础题,帮助编程新手掌握输出格式控制和循环逻辑的基本应用。
2026-01-23 15:33:55
807
原创 L1-024 后天 - 5分
摘要:本文分析了浙大PAT题目L1-024"后天"的三种解法:1)纯C语言分支判断法,通过D≤5分界处理循环问题;2)C++三元运算符简化版;3)通用取模公式法((D+1)%7+1)。重点解析了取模运算的数学推导过程(0-6转换与回绕),比较了各解法的适用场景和优劣。文章指出分支法适合新手理解,取模法是解决周期问题的通用方案,并提醒注意边界条件处理和常见错误。通过这道基础题,可掌握条件判断、循环处理和运算符优先级等核心编程概念。
2026-01-23 15:24:46
573
原创 L1-003 个位数统计 - 15 分
本文介绍了天梯赛L1-003个位数统计题的三种解法。题目要求统计不超过1000位的正整数中每个数字(0-9)出现的次数,并按升序输出。核心思路是将数字作为字符串处理,通过字符与数字的转换(c-'0')统计频率,使用长度为10的数组计数。文章详细对比了纯C、基础C++和进阶C++三种实现方式,重点分析了字符串处理、字符转换、数组计数等关键环节,并指出调试易错点。该题是典型的数据统计类问题,掌握其核心逻辑可迁移到其他类似题目中。
2026-01-22 18:53:29
1067
原创 L1-002 打印沙漏-20分
摘要 本文分享了L1-002打印沙漏题目的解题过程,重点分析了数学规律和编程实现。题目要求根据输入的符号总数N和指定字符,打印能使用最多符号的沙漏形状,并输出剩余未使用的符号数。解题关键包括:1)通过公式2*k²-1≤N确定最大层数k;2)利用循环控制实现中心对齐的沙漏打印;3)比较了C和C++两种语言的实现差异。作者还穿插了追剧《轧戏》的日常,分享被男二裴轸圈粉的经历,表达了在刷题和休闲娱乐间寻找平衡的生活态度。全文既展示了技术思考,又体现了程序员丰富的生活情趣。
2026-01-21 16:46:06
763
原创 ✨ 备战 2026 天梯赛:我的第一道题 L1-001 Hello World
一名备战2026年团体程序设计天梯赛的选手开启编程学习之旅。首次尝试用C++写代码,计划通过记录题目解法与思考过程来提升能力。首篇从经典入门题L1-001HelloWorld开始,展示了C和C++两种语言的解法。作者表示将坚持练习算法题、学习多种编程语言,并通过项目实践积累经验,朝着成为全面开发者的目标稳步前进。这篇博客既是起点,也寄托了对未来技术成长的期待。
2026-01-21 15:02:34
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅