- 博客(36)
- 收藏
- 关注
原创 P1219 [USACO1.5] 八皇后 Checker Challenge
八皇后问题是一个经典的回溯算法题,要求在n×n棋盘上放置n个互不攻击的皇后。解题要点是使用DFS逐行放置皇后,并通过标记列和对角线避免冲突。程序输出前三个解(按字典序)和解的总数。样例输入6时输出4种解,其中前三个为2 4 6 1 3 5、3 6 2 5 1 4和4 1 5 2 6 3。算法通过回溯和剪枝高效搜索,时间复杂度为O(n!),适用于n≤13的数据范围。
2025-06-02 10:02:07
773
原创 P1605 迷宫
迷宫路径计数问题摘要 本文解决了一个经典的迷宫路径计数问题,采用深度优先搜索(DFS)算法遍历所有可能的路径。题目要求从起点到终点的路径方案数,其中包含障碍物且每个方格最多访问一次。 关键点: 使用方向数组处理上下左右移动 标记已访问位置防止重复 遇到终点时立即计数并返回 递归后及时回溯,撤销访问标记 解决方案通过DFS正确统计了所有可行路径,时间复杂度与迷宫大小和障碍物位置相关,适用于题目给定的小规模迷宫(N,M ≤5)。代码简洁高效,正确处理了各种边界情况,包括起点即为终点的情况。
2025-06-02 10:00:26
1066
原创 《二叉树的特点与C语言存储实现》教案
摘要: 本教案系统讲解二叉树的核心概念与C语言实现,重点面向专升本考生。内容涵盖:①二叉树的五大特征(如结点度关系公式);②顺序/链式两种存储方案,突出链式存储的指针操作;③递归遍历的完整代码实现(前序/中序/后序)及调用栈分析;④典型教学案例与遍历序列推演。教案强调实践能力培养,通过课堂练习(如叶子结点计数)和分层作业(非递归遍历)巩固知识点,辅以直观的二叉树结构图示与板书设计,帮助理解指针操作和递归过程等难点。
2025-05-29 13:43:27
279
原创 递归与递推算法详解(C++版)教案——以斐波那契数列为例
教学过程1. 问题引入(5分钟)情景创设:“假设一对新生兔子,第2个月成熟,每月生一对新兔子。问第n个月有多少对兔子?”→ 引出斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13…数学定义:2. 递归算法详解(20分钟)核心思想:将大问题分解为相同结构的子问题三要素:代码实现:执行过程分析(以n=5为例):性能分析:核心思想:从已知条件逐步推导后续结果三要素:代码实现:执行过程演示(n=5):性能分析:实验对比(不同n值的执行时间):5. 递归优化——记忆化(选讲)
2025-05-29 13:41:25
481
原创 P1115 最大子段和
代码正确实现了 Kadane 算法,高效解决了最大子段和问题,适用于大规模数据。通过动态规划逐项计算局部最优解,最终得到全局最优解。
2025-05-25 10:01:38
974
原创 信奥赛CSP动态规划入门-最小硬币问题
最小硬币问题通过动态规划解决,目标是用最少数量的1元和5元硬币凑出给定金额N。问题拆解为小问题:凑出k元(0 ≤ k ≤ N)所需的最小硬币数。定义状态数组dp[i]表示凑出i元所需的最小硬币数,初始条件为dp[0] = 0,其余初始化为极大值。状态转移方程为dp[i] = min(dp[i], dp[i - coin] + 1),其中coin为硬币面值。程序实现中,首先初始化dp数组,然后逐个解决小问题,最后输出结果。以target=10为例,演示了动态规划的逐步填充过程,最终得出最少需要2枚硬币(5+5
2025-05-18 11:44:10
545
原创 信奥赛CSP动态规划入门-最大子段和
本文详细解析了“最大子段和”问题,并通过动态规划方法逐步实现。首先,问题被拆解为以每个位置结尾的子数组的最大和,定义状态数组dp[i]表示以第i个元素结尾的子数组的最大和,并给出初始条件和状态转移方程。接着,通过C++程序实现,展示了如何逐个解决小问题并更新全局最大值。文章还演示了动态规划的计算过程,逐步填充dp数组并更新最大和,最终得出最大连续和为6,对应子数组[4,-1,2,1]。关键点包括将大问题分解为小问题、递推关系的本质以及时间复杂度为O(n)。最后,文章提供了测试样例和常见错误分析,帮助学生更好
2025-05-18 11:42:33
618
原创 P1036 [NOIP 2002 普及组] 选数
已知n个整数x1x2⋯xn,以及1个整数kkn从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n4k34个整数分别为37121937122237192971219383121934现在,要求你计算出和为素数共有多少种。371929。
2025-05-14 14:02:34
1086
原创 CSP信奥赛新增的算法-马拉车算法(Manacher‘s Algorithm)
马拉车算法(Manacher's Algorithm)是一种用于高效查找字符串中最长回文子串的算法。通过插入分隔符(如#),算法将字符串统一为奇数长度,便于处理。算法维护三个关键变量:当前回文中心C、已知回文的最右边界R,以及每个位置的回文半径P[i]。通过镜面反射技巧,算法利用已知信息快速计算新位置的回文半径,避免重复计算。C++代码实现中,首先插入分隔符,然后通过中心扩展和镜像位置优化计算,最终找到最长回文子串。该算法的时间复杂度为O(n),空间复杂度为O(n),比暴力法更高效。通过有趣的故事和简单代码
2025-05-14 14:00:32
506
原创 CSP-J普及组第一轮考试阅读程写结果专项训练(二)
文章摘要:本文提供了两道CSP-J普及组第一轮考试的阅读程序写结果专项训练题。程序1涉及异或操作,输入特定数据后输出结果;程序2则模拟了过河卒问题,计算从起点到终点的路径数。通过这两道题目,考生可以练习阅读和理解程序代码,并掌握相关算法和逻辑思维。第一道题的输出结果为“5 6 7 0”和“0 0 0 1”,第二道题的输出结果为“6”。
2025-05-13 18:29:44
273
原创 CSP-J普及组第一轮真题单选题专项训练(二)
9、一棵有 n个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第1 个位置。若存储在数组第 9个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是()8、考虑由 N 个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至少存在()个非零元素。A、A 数组的平均 B、A 数组的最小值 C、A 数组的中值 D、A 数组的最大值。14、设A是n个实数的数组,考虑下面的递归算法:请问算法 XYZ 的输出是什么。A、n2次方 B、n-2 C、n-1 D、n。
2025-05-13 18:29:15
770
原创 CSP-J普及组第一轮真题单选题专项训练(一)
15、一棵二叉树如下图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为 1,若某结点的下标为 i,则其左孩子位于下标2i 处、右孩子位于下标 2i+1 处),则该数组的最大下标至少为()。5、若有如下程序段,其中 s、a、b、c 均已定义为整型变量,且 a、c 均已赋值(c 大于 0)4、有 6个元素,按照 6、5、4、3、2、1 的顺序进入栈 S,请问下列哪个出栈序列是非法的。7、对于入栈顺序为 a,b,c,d,e的序列,下列()不是合法的出栈序列。每题有且有一个正确选项)
2025-05-12 23:25:57
496
原创 CSP-J普及组阅读程序写结果的专项训练(二)
文章摘要: 本文展示了五个C++程序的代码及其输入输出示例。程序1模拟了储蓄计划,根据每月预算计算剩余金额或失败月份。程序2通过递归计算了香烟交换的总数。程序3判断数列是否为“欢乐的跳”,通过检查相邻元素的差值是否覆盖1到n-1。程序4寻找满足特定子数条件的五位数。程序5通过异或操作计算了给定条件下的最终结果。每个程序均通过输入数据进行测试,并输出了相应的结果。
2025-05-11 09:03:37
298
原创 CSP-J普及组阅读程序写结果的专项训练(三)
文章摘要: 本文展示了五个C++程序的代码示例及其对应的输入输出结果,涵盖了NOIP和USACO等编程竞赛中的常见问题。程序1统计给定范围内数字2的出现次数;程序2通过字符处理判断两个字符串的乘积模47是否相等;程序3实现了数字反转功能;程序4计算低洼地的数量;程序5根据输入的压缩数据生成二进制矩阵。每个程序都提供了具体的输入和输出示例,帮助理解其功能和应用场景。这些程序涉及基础算法、字符串处理和数学运算,适合编程初学者学习和参考。
2025-05-11 09:01:23
379
原创 CSP-J普及组阅读程序写结果的专项训练(一)
1.B3925 [GESP202312 三级] 小猫分鱼。2.B3786 [信息与未来 2023] 幸运数字。3.B3787 [信息与未来 2023] 精密计时。4.B3750 [信息与未来 2019] 幸运素数。5.B2117 整理药名。
2025-05-10 09:28:42
638
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(十)
《全国青少年信息素养大赛智能算法挑战赛初中模拟卷(十)》包含单选题和判断题两部分,共20题,满分100分。单选题涵盖C++编程语言的基础知识,如关键字、操作符、数据类型、函数声明、数据结构、算法等,每题5分,共75分。判断题涉及人工智能、C++标准库、物联网技术等应用场景,每题5分,共25分。试卷旨在考察学生对C++编程语言及相关技术的掌握程度,以及对实际应用场景的理解能力。
2025-05-10 08:43:35
1499
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(九)
在C++中,哪个关键字用于定义一个可以被其他类访问的类成员?以下哪个选项是C++中的标准库头文件,用于定义多线程支持?在C++中,哪个关键字用于定义一个变量在声明时必须初始化?在C++中,哪个关键字用于指定一个类为另一个类的基类?在C++中,如何声明一个指向类构造函数的常量指针?在C++中,哪个函数用于从文件中读取一个字符数组?在C++中,哪个关键字用于声明一个函数是内联的?在C++中,如何声明一个指向类成员的非常量指针?在C++中,哪个操作符用于执行按位异或操作?在C++中,哪个操作符用于执行幂运算?
2025-05-09 22:20:09
314
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(八)
在C++中,哪个关键字用于声明一个对象的生命周期仅限于当前作用域?以下哪个是C++中的内存分配函数,用于分配足够存储一个对象的内存?在C++中,哪个关键字用于定义一个变量的值在声明时必须初始化?在C++中,哪个函数用于打开一个文件并返回一个文件流对象?在C++中,哪个关键字用于定义一个可以被其他类继承的类?在C++中,哪个操作符用于创建一个指针指向数组的元素?在C++中,哪个关键字用于声明一个函数不接受任何参数?在C++中,如何声明一个指向类外部链接的指针?在C++中,如何声明一个指向类方法的指针?
2025-05-09 22:19:01
792
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(七)
在C++中,哪个函数用于从文件中读取一个字符串直到遇到指定的分隔符?以下哪个选项是C++中的标准库头文件,用于输入输出流操作?在C++中,哪个关键字用于声明一个函数是类的成员函数?在C++中,哪个关键字用于定义一个变量的地址不可更改?在C++中,哪个关键字用于定义一个异常处理的构造函数?在C++中,哪个关键字用于声明一个函数可以被重载?在C++中,如何声明一个指向类静态成员函数的指针?在C++中,哪个操作符用于创建一个对象的副本?在C++中,哪个操作符用于递减变量的值?以下哪个选项是C++中的位运算符?
2025-05-08 21:18:09
355
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(六)
在C++中,如何声明一个浮点型变量并初始化为3.14?在C++中,哪个关键字用于定义一个动态分配的局部变量?在C++中,哪个关键字用于声明一个函数可以被重写?在C++中,如何声明一个指向类成员变量的常量指针?在C++中,哪个关键字用于限定类型名称的作用域?在C++中,哪个操作符用于获取一个指针指向的值?在C++中,如何声明一个指向类析构函数的指针?在C++中,哪个函数用于向文件写入一个字符?在C++中,哪个关键字用于定义一个异常类?是一个不允许重复元素的集合容器类。在C++中,哪个操作符用于按位与操作?
2025-05-07 11:04:23
790
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(五)
全国青少年信息素养大赛智能算法挑战赛初中模拟卷(五)在C++中,如何声明一个长整型变量并初始化为10?在C++中,哪个操作符用于计算两个指针之间的差值?在C++中,如何声明一个指向类成员变量的指针?在C++中,哪个函数用于从文件中读取一个整数?在C++中,如何声明一个指向类构造函数的指针?在C++中,哪个关键字用于定义一个静态类成员?在C++中,哪个关键字用于创建一个纯虚函数?在C++中,哪个关键字用于定义一个只读常量?在C++中,哪个关键字用于创建一个抽象类?在C++中,哪个操作符用于取反布尔值?
2025-05-07 11:02:58
512
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(四)
在C++中,如何声明一个指向函数的指针,该函数没有参数并不返回任何值?在C++中,哪个关键字用于定义一个匿名函数(lambda表达式)?在C++中,哪个操作符用于检查两个指针是否指向同一个地址?在C++中,如何声明一个指向类静态成员函数的指针?在C++中,哪个函数用于向文件写入一个字符串?在C++中,哪个关键字用于定义一个私有成员?在C++中,哪个关键字用于创建一个模板类?在C++中,哪个关键字用于限制对象被复制?在C++中,哪个操作符用于递增变量的值?在C++中,如何声明一个无符号整型变量?
2025-05-07 10:59:43
570
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(三)
在C++中,哪个操作符用于从字符串中提取子字符串?在C++中,以下哪个关键字用于定义一个命名空间?在C++中,哪个关键字用于定义一个局部静态变量?在C++中,哪个函数用于从文件中读取一个字符?在C++中,如何声明一个指向类成员函数的指针?在C++中,哪个关键字用于创建一个匿名结构体?在C++中,如何声明一个指向二维数组的指针?以下哪个选项是C++中的用户定义数据类型?在C++中,哪个函数用于计算字符串的长度?在C++中,哪个关键字用于声明一个虚函数?以下哪个是C++中的动态内存分配函数?
2025-05-05 09:53:49
1180
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(二)
在C++中,如何声明一个指向函数的指针,该函数接受两个整型参数并返回一个整型值?在C++中,哪个关键字用于检查两个指针是否指向同一个对象?在C++中,定义并初始化一个字符型变量的语句是?在C++中,如何声明一个指向整型数据的指针?在C++中,文件的关闭操作通常使用哪个函数?在C++中,哪个关键字用于声明一个全局变量?在C++中,哪个关键字用于定义一个枚举类型?在C++中,以下哪个关键字用于定义一个类?在C++中,用于输入数据到程序的函数是?在C++中,哪个操作符用于字符串连接?
2025-05-05 09:52:56
951
原创 全国青少年信息素养大赛智能算法挑战赛初中模拟卷(一)
在C++中,哪个操作符用于获取一个对象的地址?在C++中,文件的打开操作通常使用哪个函数?在C++中,用于输出数据到控制台的函数是?计算机的中央处理器(CPU)主要负责什么?在C++中,如何声明一个指向函数的指针?在C++中,定义一个整型变量的语句是?以下哪个算法是用于查找数组中的最大值?以下哪个选项是C++中的逻辑运算符?在C++中,哪个关键字用于定义常量?在C++中,如何实现循环打印0到9?在C++中,如何定义一个二维数组?以下哪个是C++中的结构体关键字?C++中的字符型数据类型使用关键字。
2025-05-05 09:51:48
760
原创 GESP/CSP 选手必刷C++ 基础算法题(一)
我们设1单位的草量为1头牛,那么15头牛吃20天的草量为300单位(其中包含20天内的新生草量),在计算20头牛吃10的草量为200个单位(其中包含10天内的新生草量),两者的差为10天内的新生草量。有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天或可供20头牛吃10天,那么牧场每天新生的草量可供几头牛吃1天。数学中经典的“鸡兔同笼”问题,已知头共30个,脚共90只,问笼中的鸡和兔各有多少只?分析:梯形的面积=(上 + 下)x 高 / 2。设鸡为j只,兔为t只,头为h,脚为f,那么。
2025-05-05 09:47:27
365
原创 GESP 2025年3月C++一级真题答案以及知识点解析
2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。:本题结合DeepSeek和《哪吒2》这些时事,考查考生对新事物的理解认识。DeepSeek是一个人工智能系统,能够根据场景生成剧情脚本,而《哪吒2》是一部电影,不具备生成软件的功能。在某集成开发环境中编辑一个源代码文件时不可以执行下面( )操作。:本题考查考生对平时编程的集成开发环境(IDE)是否有基本的了解。
2025-04-26 11:33:32
764
原创 GESP C++ 一级考试(2024年)3月6月9月12月真题专项训练之C++循环结构知识选择题和判断题
所以题目说法正确,答案为 √。按照这个for循环的执行逻辑,循环会依次执行,当i为 1 时满足条件进入循环,然后i变为 4,再次满足条件继续循环,接着i变为 7,依然满足条件继续循环,而当i变为 10 时,由于条件表达式是i < 10,此时已经不满足条件了,循环就会结束,所以i能取到的值是 1、4、7,并不会取到 10。循环范围为1-19,i每次加1,循环体为if多分支语句和cnt+=i(i的累加),如果i不是2的倍数的话,那么就会结束为本次循环,执行下次循环,如果i是3和5的倍数的话,那么就会结束循环。
2025-04-26 10:41:43
667
原创 GESP C++ 一级考试(2024年)3月6月9月12月真题专项训练之C++分支结构选择题和判断题
flag=1:flag=2) 后 flag 的值被赋为了 2,此时 flag==2 这个关系表达式的值为 true(在 C++ 中,关系表达式成立时值为 true,不成立时值为 false),其结果类型是布尔类型(bool)。由于前面判断出 '1' + '1' == '2' 为 false,所以会执行 flag=2 这部分(这里要注意,flag=2 是一个赋值表达式,它会将 2 赋给 flag,同时整个赋值表达式的值就是被赋的值,也就是 2),那么整个三目运算符表达式 ('1'+'1'=='2'?
2025-04-26 10:38:28
632
原创 GESP C++ 一级考试(2024年)3月6月9月12月真题专项训练之C++顺序结构选择题和判断题
C 选项,符合要求,正确。否则 t>=1 , (4k+4)/4*4<=(a+3)/4*4<=(4k+6)/4*4 ,即 (4k+4)<=(a+3)/4*4<=(4k+4) ,结果为4k+4 ,大于 a 且是 4 的倍数的整数中最小的,满足题意;算式中, (3==0) 的计算结果为 bool 类型、 ’A’ 为 char 类型常量、 1 为 int 类型常量、 3.0 为 double 类型常量,将它们相加时会从低精度的高精度的进行类型转换,最终结果为 double 类型,所以本题正确答案为 A。
2025-04-26 10:35:10
719
原创 GESP C++ 一级考试(2024年)3月6月9月12月真题专项训练之计算机基础知识选择题和判断题
它的主要部件都是由电子管组成的,故答案为B选项。计算机中,表示存储大小的最小单位为 “ 字节 ” ,英文为 “Byte” ,表示一个字节存储空间大小的单位,用大写字母 B 表示,所以本题正确答案为 A。题干强调磁心元件为计算机运算控制部分的存储元件,计算机中内存用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据,故该元件属于内存,所以本题正确答案为A。题目中所列举的编程语言,均无法在CPU 上直接执行,而是需要通过各自的方式,转换成机器语言后才能被 CPU 识别和执行,所以本题错误。
2025-04-26 10:24:19
402
原创 2024年全国青少年信息素养大赛(C++算法创意实践初赛真题)
例如:6的因数有1、2、3、6,除去6之外的因数之和为1+2+3=6,所以6为完全数。编写程序,按从小到大的顺序寻找1到10000之间的完全数,输出第n个完全数,n的范围0<n<5。题目要求寻找1到10000之间的完全数,并输出第n个完全数。- ②处检查n是否能被i整除:`n % i == 0`,若能则不是质数。- ②处判断sum是否等于当前数a:`sum == a`。- ②处计算十位数:`s = a / 10 % 10`。- ①处需要累加因数j到sum:`sum += j`。题目要求输出结果为9的语句。
2025-04-26 10:02:31
1239
原创 2025 全国青少年信息素养大赛赛项说明
循环结构:for循环、while循环来解决重复任务。循环结构:for循环、while循环来解决重复任务。赛项名称:算法创意实践挑战赛 (编程语言:C++)自定义函数以及递归调用概念强化;字符串:字符串操作基础,如连接、搜索字符等。字符串:字符串操作基础,如连接、搜索字符等。枚举:使用loops穷举可能性来找到答案。枚举:使用loops穷举可能性来找到答案。顺序结构:理解程序流程、基本输入输出。算法 模拟:按照题目描述直接实现功能。顺序结构:理解程序流程、基本输入输出。算法 模拟:按照题目描述直接实现功能。
2025-04-26 09:59:46
436
1
2024年信息素养智能算法应用复赛C++初中组真题 2024年信息素养算法创意实践挑战复赛真题(广东) 2024年信息素养算法创意实践挑战复赛真题(浙江)
2025-05-11
【C++算法创意实践挑战赛】全国青少年信息素养大赛:C++编程竞赛规则与内容详解2025
2025-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人