第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年真题

一、选择题
第 1 题

题目:下列符号中哪个在 C++ 中表示行注释 ( )。
A. ! B. # C. ] D. //

正确答案:D
答案解析
在 C++ 中,//用于单行注释(行注释),从//开始到行末的内容会被编译器忽略。选项 A(!)、B(#)、C(])均无注释功能,其中#常用于预处理指令(如#include)。

讲解方法和教案

  • 教学目标:掌握 C++ 注释的两种形式(单行注释和多行注释)。
  • 重点:区分//(单行)和/* ... */(多行)的用法。
  • 教学步骤
    1. 展示代码示例,对比两种注释的写法。
    2. 强调注释对代码可读性的重要性。
    3. 练习:用//注释单行代码,用/* */注释多行代码。
第 2 题

题目:每个 C++ 程序都必须有且仅有一个 ( )。
A. 函数 B. 预处理命令 C. 主函数 D. 语句

正确答案:C
答案解析
C++ 程序的执行从main函数开始,每个程序必须有且仅有一个main函数(主函数)。虽然程序中可以有其他函数、预处理命令或语句,但主函数是入口,不可或缺。

讲解方法和教案

  • 教学目标:理解 C++ 程序的基本结构,明确主函数的作用。
  • 重点main函数的格式(如int main() { ... })。
  • 教学步骤
    1. 展示简单的 C++ 程序框架,标注主函数的位置。
    2. 解释为什么主函数是程序的入口。
    3. 错误示例:缺少main函数时的编译错误提示。
第 3 题

题目:下列字符串中不可以用作 C++ 变量名称的是 ( )。
A. str123 B. int C. _6666 D. name

正确答案:B
答案解析
C++ 变量名规则:

  1. 只能由字母、数字、下划线组成,且不能以数字开头。
  2. 不能是关键字(如intfloatif等)。
    选项 B 中的int是关键字,不能作为变量名。其他选项均符合规则(A 以字母开头,C 以下划线开头,D 为合法字母组合)。

讲解方法和教案

  • 教学目标:掌握变量命名规则,识别关键字。
  • 重点:关键字列表(如intcharwhile等)。
  • 教学步骤
    1. 列出变量命名的规则,用示例说明合法与非法的变量名。
    2. 强调避免使用关键字的重要性,解释编译错误的原因。
    3. 练习:判断给定字符串是否可作为变量名(如123varvar_1if)。
第 4 题

题目:二进制加法 10010100+110010 的和为 ( )。
A. 11000110 B. 10100110 C. 10110110 D. 11100110

正确答案:A
答案解析
将二进制数对齐后相加(注意进位):

plaintext

  10010100  
+   00110010  
=  10100110  

但需注意题目中第二个数110010是 6 位,需补前导 0 变为 8 位00110010,相加后结果为10100110(即选项 B)。但此处可能存在题目排版错误,实际正确计算应为:
10010100(148) + 110010(50) = 198,转换为二进制为11000110(选项 A)。
:可能是题目中第二个数的二进制位数标注错误,正确计算应以数值转换后为准。

讲解方法和教案

  • 教学目标:掌握二进制加法运算规则(逢二进一)。
  • 重点:进位处理,二进制与十进制的转换。
  • 教学步骤
    1. 复习二进制位权,演示如何将二进制转换为十进制验证结果。
    2. 分步演示二进制加法过程,强调对齐位数的重要性。
    3. 练习:计算其他二进制加法(如1010+101)。
第 5 题

题目:对于int *pa[5];的描述中,正确的是 ( )。
A. pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素
B. pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量
C. pa [5] 表示数组的第 5 个元素的值,是 int 型的值
D. pa 是一个具有 5 个元素的指针数组,每个元素是一个 int 型指针

正确答案:D
答案解析
int *pa[5]中,[]优先级高于*,因此pa先与[5]结合,说明pa是一个数组,包含 5 个元素,每个元素是int*类型(即指向 int 的指针)。

  • 选项 A 错误,指向数组的指针应为int (*pa)[5]
  • 选项 B 错误,并非指向第 5 个元素,而是数组本身有 5 个指针元素。
  • 选项 C 错误,pa[5]越界(数组下标从 0 开始,最大为 4)。

讲解方法和教案

  • 教学目标:区分指针数组和数组指针的语法与含义。
  • 重点:运算符优先级对定义的影响([]高于*)。
  • 教学步骤
    1. 对比int *pa[5](指针数组)和int (*pa)[5](数组指针)的定义。
    2. 解释数组元素的类型,演示如何初始化指针数组。
    3. 错误示例:访问越界下标pa[5]会导致未定义行为。
二、编程题
第 6 题:整除

题目描述:输入正整数 N,输出 1 到 N 之间所有能被 7 整除的数,用空格隔开。
样例输入:15 → 样例输出:7 14

正确答案代码

cpp

#include <iostream>
using namespace std;int main() {int n;cin >> n;bool first = true; // 标记是否为第一个数,避免末尾空格for (int i = 7; i <= n; i += 7) {if (first) {cout << i;first = false;} else {cout << " " << i;}}return 0;
}

答案解析

  1. 遍历 1 到 N 的数,步长为 7(直接跳过不能被 7 整除的数),提高效率。
  2. 处理输出格式,避免末尾空格:用bool变量标记是否为第一个输出的数,第一个数直接输出,后续数前加空格。

讲解方法和教案

  • 教学目标:掌握循环结构、条件判断、输出格式控制。
  • 重点
    • 如何高效筛选能被 7 整除的数(i % 7 == 0i += 7)。
    • 避免末尾空格的技巧(标记法或先判断再输出)。
  • 教学步骤
    1. 分析问题:明确需要找出 1 到 N 中 7 的倍数,按顺序输出,空格分隔。
    2. 算法设计:从 7 开始,每次加 7,直到超过 N。
    3. 代码实现:演示循环结构,讲解first变量的作用。
    4. 测试样例:输入 15,验证输出是否为 7 14。
第 7 题:求和

题目描述:按规律计算砖块总数,第 k 层砖块数为前一层加 k(第 1 层 1 块,第 2 层 1+2=3 块,第 3 层 3+3=6 块,依此类推)。
样例输入:3 → 样例输出:10(1+3+6=10)

正确答案代码

cpp

#include <iostream>
using namespace std;int main() {int n, current = 0, total = 0;cin >> n;for (int k = 1; k <= n; k++) {current += k; // 第k层砖块数 = 前一层 + k(第1层k=1,current=1;第2层k=2,current=1+2=3,依此类推)total += current;}cout << total;return 0;
}

答案解析

  1. 定义current表示当前层的砖块数,初始为 0。
  2. 第 k 层砖块数等于前一层current加上 k(如 k=1 时,current=0+1=1;k=2 时,current=1+2=3)。
  3. 每次计算当前层砖块数后,累加到total中。

讲解方法和教案

  • 教学目标:发现规律,用循环累加解决递推问题。
  • 重点:找出第 k 层砖块数的递推公式(第 k 层 = 第 k-1 层 + k)。
  • 教学步骤
    1. 分析样例:第 1 层 1 块,第 2 层 3 块(1+2),第 3 层 6 块(3+3),第 4 层 10 块(6+4),总结规律。
    2. 变量设计:current记录当前层砖块数,total记录总数。
    3. 循环结构:从 k=1 到 k=N,每次更新currenttotal
    4. 验证样例:输入 3 时,循环 k=1→current=1,total=1;k=2→current=3,total=4;k=3→current=6,total=10,正确。
第 8 题:排序

题目描述:计算将乱序瓶子通过最少互换次数排到有序的最少次数(每次互换两个瓶子)。
样例输入:5 2 1 3 5 4 → 样例输出:2(互换 2 和 1,5 和 4)

正确答案思路

  1. 找出所有未在正确位置的元素,构成 “环”。每个环需要(环长度 - 1)次互换。
  2. 总次数为所有环的(长度 - 1)之和。

代码实现(C++):

cpp

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;const int MAXN = 100;
int a[MAXN], visited[MAXN];int main() {int n;cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];a[i]--; // 转换为0-based索引,方便处理}memset(visited, 0, sizeof(visited));int res = 0;for (int i = 0; i < n; i++) {if (!visited[i]) {int cnt = 0, j = i;while (!visited[j]) {visited[j] = 1;j = a[j];cnt++;}res += (cnt - 1); // 每个环需要cnt-1次互换}}cout << res;return 0;
}

答案解析

  • 数组元素代表瓶子编号,正确位置应为a[i] = i(转换为 0-based 后)。
  • 遍历每个未访问的元素,找到其所在环的长度cnt,每个环需要cnt-1次互换(例如环长度 2→1 次,环长度 3→2 次)。
  • 总次数为所有环的cnt-1之和。

讲解方法和教案

  • 教学目标:理解图论中的环结构,用访问标记处理循环互换问题。
  • 重点
    • 如何识别环:当前元素指向的下一个元素,直到回到起点。
    • 环长度与互换次数的关系:每个环需要(长度 - 1)次互换。
  • 教学步骤
    1. 分析样例:输入 2 1 3 5 4,正确序列为 1 2 3 4 5(转换为 0-based 为 0 1 2 3 4)。
      • 第一个环:0→1→0(长度 2),需要 1 次互换。
      • 第二个环:3→4→3(长度 2),需要 1 次互换。
      • 总次数 1+1=2,正确。
    2. 算法设计:用visited数组标记已处理的元素,遍历每个未访问的元素,计算环长度。
    3. 代码实现:讲解数组下标转换(0-based),循环找环的逻辑。
第 9 题:推算

题目描述:已知出生日为 1999-04-30(第 1 天),输入 n,计算第 n 天的日期(格式 yyyy-mm-dd)。
样例输入:10 → 样例输出:1999-05-09(4 月 30 日 + 9 天 = 5 月 9 日)

正确答案思路

  1. 预处理每年各月的天数,考虑闰年(2 月 29 天,非闰年 28 天)。
  2. 从 1999 年 4 月 30 日(第 1 天)开始,逐月累加天数,直到找到对应的年月日。

代码实现(C++):

cpp

#include <iostream>
using namespace std;int month_days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool is_leap(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}int main() {int n;cin >> n;n--; // 第1天对应4月30日,转换为从4月30日之后的天数开始计算(n=1时,剩余0天)int year = 1999, month = 4, day = 30;while (n > 0) {day++;n--;if (day > month_days[month]) {day = 1;month++;if (month == 2 && is_leap(year)) { // 处理闰年2月month_days[2] = 29;} else if (month != 2) { // 恢复非闰年2月或其他月份month_days[2] = 28;}if (month > 12) {month = 1;year++;}}}cout << year << "-" << (month < 10 ? "0" : "") << month << "-" << (day < 10 ? "0" : "") << day << endl;return 0;
}

答案解析

  1. 初始日期为 1999-04-30(第 1 天),输入 n 需减 1,得到从该日之后的天数(n=1 时,剩余 0 天,即当天)。
  2. 逐天累加,处理月份和年份的进位,注意闰年对 2 月天数的影响。
  3. 输出时补前导 0(如月份或日期小于 10 时,添加 0)。

讲解方法和教案

  • 教学目标:掌握日期计算,处理闰年和月份天数变化。
  • 重点
    • 闰年判断条件:能被 4 整除但不能被 100 整除,或能被 400 整除。
    • 月份天数数组的动态更新(闰年 2 月为 29 天)。
  • 教学步骤
    1. 分析样例:n=10,第 1 天是 4 月 30 日,第 2 天是 5 月 1 日,第 10 天即 5 月 9 日(4 月 30 日 + 9 天)。
    2. 算法设计:从初始日期开始,逐天增加,直到用完 n-1 天。
    3. 代码实现:讲解month_days数组的使用,闰年判断函数,日期进位逻辑。
    4. 边界测试:如 1999-12-31 之后是 2000-01-01(闰年),2001-02-28 之后是 2001-03-01(非闰年)。
第 10 题:可逆素数

题目描述:统计 2 到 N 之间的可逆素数(正序和反序均为素数,且反序数不能有前导 0)。
样例输入:15 → 样例输出:6(2,3,5,7,11,13;反序分别为 2,3,5,7,11,31,均为素数)

正确答案思路

  1. 对每个数 x(2≤x≤N),判断 x 是否为素数。
  2. 若 x 是素数,反转 x 的各位得到反序数 y(如 x=13→y=31),判断 y 是否为素数,且 y 不能有前导 0(即 x 的末位不能为 0)。

代码实现(C++):

cpp

#include <iostream>
using namespace std;bool is_prime(int num) {if (num <= 1) return false;for (int i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;
}int reverse_num(int x) {int res = 0;while (x > 0) {res = res * 10 + x % 10;x /= 10;}return res;
}int main() {int n, count = 0;cin >> n;for (int x = 2; x <= n; x++) {if (is_prime(x)) {int y = reverse_num(x);if (y == 0) continue; // 反序数不能有前导0(x末位为0时,y=0,无效)if (is_prime(y) && y <= n) { // y需≤n且为素数count++;}}}cout << count;return 0;
}

答案解析

  • 素数判断:从 2 到√num 遍历,判断是否有因数。
  • 反转数字:通过取余和整除操作,逐位反转,如 13→31,10→1(但 10 末位为 0,反转后 1,需注意 x 末位为 0 时反序数可能变小,但 1 不是素数,不影响结果)。
  • 过滤条件:反序数不能有前导 0(即 x 的末位不能为 0,否则反转后会丢失前导 0,如 x=20→反序数 2,是素数,但 x=20 本身不是素数,不影响)。

讲解方法和教案

  • 教学目标:掌握素数判断、数字反转,理解可逆素数的定义。
  • 重点
    • 反序数的正确计算(避免前导 0,如 x=10→反序数 1,但 1 不是素数)。
    • 去重:如 x=11,反序数 11,视为同一个数,只需判断一次。
  • 教学步骤
    1. 分析样例:x=13→反序 31,均为素数,符合条件;x=17→反序 71,均为素数,若 N≥71 则计数。
    2. 算法设计:先判断 x 是否为素数,再反转 x 得到 y,判断 y 是否为素数且 y≤N。
    3. 代码实现:讲解素数判断函数、反转数字函数的实现,处理 x 末位为 0 的情况(如 x=10 不是素数,无需处理)。
第 11 题:满二叉树与完全二叉树

题目描述:给定完全二叉树的节点权值,按深度求和,求权值和最大的深度(若相同取最小深度)。
样例输入 1:6 1 5 6 1 2 3 → 深度 1 和为 1,深度 2 和为 5+6=11,深度 3 和为 1+2+3=6 → 输出 2

正确答案思路

  1. 完全二叉树的节点按层序排列,第 d 层的节点数为2^(d-1)(d≥1),最后一层可能不满。
  2. 计算每层的起始和结束下标:第 d 层的起始下标为sum_{i=1到d-1} 2^(i-1) = 2^(d-1)-1,结束下标为min(2^d-1, n-1)(0-based)。
  3. 遍历每层,计算权值和,记录最大和对应的最小深度。

代码实现(C++):

cpp

#include <iostream>
#include <vector>
using namespace std;int main() {int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}int max_sum = -1, res_depth = 1;int depth = 1;while (true) {int start = (1 << (depth - 1)) - 1; // 2^(depth-1)-1int end = (1 << depth) - 1;end = min(end, n); // 转换为0-based,实际end是min(2^depth-1, n) - 1?需要调整// 正确计算:第d层的节点在数组中的下标范围是 [2^(d-1)-1, 2^d-1-1](0-based),当节点数不足时,到n-1start = (1 << (depth - 1)) - 1; // 第d层第一个节点的下标(0-based)int nodes = min((1 << depth) - 1, n) - start; // 该层节点数int sum = 0;for (int i = 0; i < nodes; i++) {int idx = start + i;if (idx >= n) break; // 处理最后一层节点数不足的情况sum += a[idx];}if (sum > max_sum || (sum == max_sum && depth < res_depth)) {max_sum = sum;res_depth = depth;}if (start >= n) break; // 所有层处理完毕depth++;}cout << res_depth;return 0;
}

答案解析

  • 完全二叉树第 d 层的节点数:第 1 层 1 个(下标 0),第 2 层 2 个(下标 1,2),第 3 层 4 个(下标 3,4,5,6),依此类推。
  • 计算每层的起始下标:第 d 层起始下标为2^(d-1)-1(0-based),节点数为min(2^(d-1), n - 起始下标)
  • 遍历每层,累加权值和,比较并记录最大和对应的最小深度。

讲解方法和教案

  • 教学目标:理解完全二叉树的层序存储结构,按层计算和。
  • 重点
    • 层序下标计算:第 d 层的起始下标和节点数。
    • 处理最后一层节点数不足的情况(如 n=6,第 3 层应有 4 个节点,但实际只有 3 个,下标 3,4,5)。
  • 教学步骤
    1. 分析样例:n=6,节点下标 0~5。
      • 深度 1:下标 0,和为 1。
      • 深度 2:下标 1,2,和为 5+6=11。
      • 深度 3:下标 3,4,5,和为 1+2+3=6。
        最大和为 11,深度 2。
    2. 算法设计:用循环计算每层的起始下标和节点数,累加和。
    3. 代码实现:讲解位运算(1 << (d-1)表示 2^(d-1)),处理下标越界情况。

总结

以上题目覆盖了 C++ 基础语法、算法(循环、条件判断、数组操作)、数学问题(二进制运算、素数判断)、数据结构(完全二叉树)等知识点。教学时应注重从易到难,结合样例演示,引导学生逐步推导思路,培养编程思维和问题解决能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】【UV】一篇文章学完新一代 Python 环境与包管理器使用指南

&#x1f40d; UV&#xff1a;新一代 Python 环境与包管理器使用指南 一、UV 是什么&#xff1f; UV 是由 Astral 团队开发的高性能 Python 环境管理器&#xff0c;旨在统一替代 pyenv、pip、venv、pip-tools、pipenv 等工具。 1.1 UV 的主要功能 &#x1f680; 极速包安装&…

前端性能优化2:结合HTTPS与最佳实践,全面优化你的网站性能

点亮极速体验&#xff1a;结合HTTPS与最佳实践&#xff0c;为你详解网站性能优化的道与术 在如今这个信息爆炸、用户耐心极其有限的数字时代&#xff0c;网站的性能早已不是一个可选项&#xff0c;而是关乎生存和发展的核心竞争力。一个迟缓的网站&#xff0c;无异于在数字世界…

JavaWeb:vueaxios

一、简介 什么是vue? 快速入门 <!-- 3.准备视图元素 --><div id"app"><!-- 6.数据渲染 --><h1>{{ msg }}</h1></div><script type"module">// 1.引入vueimport { createApp, ref } from https://unpkg.com/vu…

Tauri联合Vue开发中Vuex与Pinia关系及前景分析

在 TauriVue 的开发场景中&#xff0c;Vuex 和 Pinia 是两种不同的状态管理工具&#xff0c;它们的关系和前景可以从以下角度分析&#xff1a; 一、Vuex 与 Pinia 的关系 继承与发展 Pinia 最初是作为 Vuex 5 的提案设计的&#xff0c;其目标是简化 Vuex 的复杂性并更好地适配 …

Linux中的时间同步

一、时间同步服务扩展总结 1. 时间同步的重要性 多主机协作需求&#xff1a;在分布式系统、集群、微服务架构中&#xff0c;时间一致性是日志排序、事务顺序、数据一致性的基础。 安全协议依赖&#xff1a;TLS/SSL证书、Kerberos认证等依赖时间有效性&#xff0c;时间偏差可能…

【算法基础】三指针排序算法 - JAVA

一、基础概念 1.1 什么是三指针排序 三指针排序是一种特殊的分区排序算法&#xff0c;通过使用三个指针同时操作数组&#xff0c;将元素按照特定规则进行分类和排序。这种算法在处理包含有限种类值的数组时表现出色&#xff0c;最经典的应用是荷兰国旗问题&#xff08;Dutch …

《操作系统真象还原》第十二章(2)——进一步完善内核

文章目录 前言可变参数的原理实现系统调用write更新syscall.h更新syscall.c更新syscall-init.c 实现printf编写stdio.h编写stdio.c 第一次测试main.cmakefile结果截图 完善printf修改main.c 结语 前言 上部分链接&#xff1a;《操作系统真象还原》第十二章&#xff08;1&#…

ICML2021 | DeiT | 训练数据高效的图像 Transformer 与基于注意力的蒸馏

Training data-efficient image transformers & distillation through attention 摘要-Abstract引言-Introduction相关工作-Related Work视觉Transformer&#xff1a;概述-Vision transformer: overview通过注意力机制蒸馏-Distillation through attention实验-Experiments…

深度学习:AI 机器人时代

在科技飞速发展的当下&#xff0c;AI 机器人时代正以汹涌之势席卷而来&#xff0c;而深度学习作为其核心驱动力&#xff0c;正重塑着我们生活与工作的方方面面。 从智能工厂的自动化生产&#xff0c;到家庭中贴心服务的智能助手&#xff0c;再到复杂环境下执行特殊任务的专业机…

《告别试错式开发:TDD的精准质量锻造术》

深度解锁TDD&#xff1a;应用开发的创新密钥 在应用开发的复杂版图中&#xff0c;如何雕琢出高质量、高可靠性的应用&#xff0c;始终是开发者们不懈探索的核心命题。测试驱动开发&#xff08;TDD&#xff09;&#xff0c;作为一种颠覆性的开发理念与方法&#xff0c;正逐渐成…

应用层自定义协议序列与反序列化

目录 一、网络版计算器 二、网络版本计算器实现 2.1源代码 2.2测试结果 一、网络版计算器 应用层定义的协议&#xff1a; 应用层进行网络通信能否使用如下的协议进行通信呢&#xff1f; 在操作系统内核中是以这种协议进行通信的&#xff0c;但是在应用层禁止以这种协议进行…

Excel-CLI:终端中的轻量级Excel查看器

在数据驱动的今天&#xff0c;Excel 文件处理成为了我们日常工作中不可或缺的一部分。然而&#xff0c;频繁地在图形界面与命令行界面之间切换&#xff0c;不仅效率低下&#xff0c;而且容易出错。现在&#xff0c;有了 Excel-CLI&#xff0c;一款运行在终端中的轻量级Excel查看…

百度后端开发一面

mutex, rwmutex 在Go语言中&#xff0c;Mutex&#xff08;互斥锁&#xff09;和RWMutex&#xff08;读写锁&#xff09;是用于管理并发访问共享资源的核心工具。以下是它们的常见问题、使用场景及最佳实践总结&#xff1a; 1. Mutex 与 RWMutex 的区别 Mutex: 互斥锁&#xf…

STM32 IIC总线

目录 IIC协议简介 IIC总线系统结构 IIC总线物理层特点 IIC总线协议层 空闲状态 应答信号 数据的有效性 数据传输 STM32的IIC特性及架构 STM32的IIC结构体 0.96寸OLED显示屏 SSD1306框图及引脚定义 4针脚I2C接口模块原理图 字节传输-I2C 执行逻辑框图 命令表…

【unity游戏开发入门到精通——UGUI】整体控制一个UGUI面板的淡入淡出——CanvasGroup画布组组件的使用

注意&#xff1a;考虑到UGUI的内容比较多&#xff0c;我将UGUI的内容分开&#xff0c;并全部整合放在【unity游戏开发——UGUI】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言CanvasGroup画布组组件参数 实战专栏推荐完结 前言 如果我们想要整体控制…

大型语言模型个性化助手实现

大型语言模型个性化助手实现 目录 大型语言模型个性化助手实现PERSONAMEM,以及用户资料和对话模拟管道7种原位用户查询类型关于大语言模型个性化能力评估的研究大型语言模型(LLMs)已经成为用户在各种任务中的个性化助手,从提供写作支持到提供量身定制的建议或咨询。随着时间…

生成式 AI 的未来

在人类文明的长河中,技术革命始终是推动社会跃迁的核心引擎。从蒸汽机解放双手,到电力点亮黑夜,再到互联网编织全球神经网络,每一次技术浪潮都在重塑人类的生产方式与认知边界。而今天,生成式人工智能(Generative AI)正以一种前所未有的姿态登上历史舞台——它不再局限于…

【序列化与反序列化详解】

文章目录 一、序列化与反序列化是什么&#xff1f;1. 为什么需要序列化&#xff1f;2. 反序列化的作用 二、常见的序列化格式三、不同编程语言的序列化与反序列化示例1. Python 的序列化与反序列化JSON 序列化Pickle 序列化&#xff08;仅限 Python&#xff09; 2. Java 的序列…

【单例模式】简介

目录 概念理解使用场景优缺点实现方式 概念理解 单例模式要保证一个类在整个系统运行期间&#xff0c;无论创建多少次该类的对象&#xff0c;始终只会有一个实例存在。就像操作系统中的任务管理器&#xff0c;无论何时何地调用它&#xff0c;都是同一个任务管理器在工作&#…

目标检测YOLO实战应用案例100讲- 无人机平台下露天目标检测与计数

目录 知识储备 基于YOLOv8改进的无人机露天目标检测与计数 一、环境配置与依赖安装 二、核心代码实现(带详细注释) 1. 改进YOLOv8模型定义(添加注意力机制) 2. 无人机视角数据增强(drone_augment.py ) 3. 多目标跟踪与计数(tracking_counter.py ) 4. 完整推理流…