当前位置: 首页 > news >正文

第 11 届蓝桥杯 C++ 青少组中 / 高级组省赛 2020 年真题,选择题详细解释

一、选择题

第 2 题 

在二维数组按行优先存储的情况下,元素 `a[i][j]` 前的元素个数计算如下:

1. **前面的完整行**:共有 `i` 行,每行 `n` 个元素,总计 `i * n` 个元素。
2. **当前行的前面元素**:在行内,`a[i][j]` 前有 `j` 个元素(索引从 0 开始)。

因此,总元素个数为 **`i * n + j`**。

**验证示例**:
- 对于 `a[1][1]`(假设 `n=3`):`i=1`, `j=1`,计算得 `1*3 + 1 = 4`,即前面有 4 个元素。
- 对于 `a[0][0]`:计算得 `0*3 + 0 = 0`,正确。
- 对于 `a[2][2]`(`n=4`):计算得 `2*4 + 2 = 10`,正确。

**错误选项分析**:
- **A. `i*n + j - 1`**:少算 1 个元素(如 `a[0][0]` 结果为 `-1`,错误)。
- **C. `j*n + i`**:假设列优先存储(非常见情况),与题意不符。
- **D. `i*n + j + 1`**:多算 1 个元素(如 `a[0][0]` 结果为 `1`,错误)。

**正确答案**:**B. `i*n + j`**

第 4 题 单选题

题目:按照 “先进后出” 原则组织数据的结构是 ( )
A. 队列
B. 栈
C. 双向链表
D. 二叉树

答案:**B. 栈**

**详细解释**:  
1. **先进后出(FILO)原则**的含义是:**最早进入结构的元素最后被访问或删除**,而最后进入的元素最先被访问或删除。这种特性类似于生活中叠放的盘子,最后放上去的盘子会被最先取用。

2. **选项分析**:
   - **A. 队列**:队列遵循**先进先出(FIFO)**原则,即先进入队列的元素先被处理(如排队买票)。与题目要求的“先进后出”相反,因此排除。
   - **B. 栈**:栈的插入(`push`)和删除(`pop`)操作均在**栈顶**进行,最后压入栈的元素最先被弹出,完美符合“先进后出”原则。例如,函数调用栈、撤销操作(Ctrl+Z)均基于栈实现。
   - **C. 双向链表**:双向链表允许在任意位置插入或删除节点,没有强制限制元素的访问顺序,因此与“先进后出”无关。
   - **D. 二叉树**:二叉树是分层存储数据的树形结构,元素的访问顺序取决于遍历方式(如前序、中序、后序遍历),而非“先进后出”规则,因此排除。

3. **结论**:只有**栈**严格遵循“先进后出”原则,因此正确答案是 **B. 栈**。

第 5 题 单选题

题目:用 0、1、2、3、4 这五个数字,能组成多少个没有重复数字的多位偶数?
A. 144 B. 147 C. 160 D. 163

位偶数: 3 种(个位是 0 2 4 );
两位偶数:如果个位是 0 ,这样的两位数有 4 种(⼗位 4 种);如果个位是 2 4 ,这样的两位数有
2*3=6 种(⼗位 3 种),共计 10 种;
三位偶数:如果个位是 0 ,这样的三位数有 4*3=12 种(百位 4 种、⼗位 3 种);如果个位是 2 4 ,这
样的三位数有 2*3*3=18 种( 个位 2 种、百位 3 种、⼗位 3 种),共计 30 种;
四位偶数:如果个位是 0 ,这样的四位数有 4*3*2=24 种(千位 4 种、百位 3 种、⼗位 2 种);如果个
位是 2 4 ,这样的四位数有 2*3*3*2=36 种(依次为个位 2 种、千位 3 种、百位 3 种、⼗位 2 种),共
60 种;
五位偶数:如果个位是 0 ,这样的五位数有 4*3*2*1=24 种(万位 4 种、千位 3 种、百位 2 种、⼗位 1
种);如果个位是 2 4 ,这样的五位数有 2*3*3*2*1=36 种(个位 2 种、万位 3 种、千位 3 种、百位 2
种、⼗位 1 种),共计 60 种;
共计 3+10+30+60+60=163 种,其中多位偶数有 160 种。

要解决用0、1、2、3、4组成没有重复数字的多位偶数的问题,需分类讨论末位为0、2、4的情况,并逐位分析各长度的数。

### 解题思路
1. **末位为0**:
   - 末位固定为0,剩余数字为1、2、3、4,首位不能为0。
   - **两位数**:首位有4种选择(1、2、3、4),共4种。
   - **三位数**:首位4种,第二位3种,共4×3=12种。
   - **四位数**:首位4种,第二位3种,第三位2种,共4×3×2=24种。
   - **五位数**:4!(即24种)。
   - 总计:4 + 12 + 24 + 24 = **64种**。

2. **末位为2**:
   - 末位固定为2,剩余数字为0、1、3、4,首位不能为0。
   - **两位数**:首位有3种选择(1、3、4),共3种。
   - **三位数**:首位3种,第二位3种(含0),共3×3=9种。
   - **四位数**:首位3种,第二位3种,第三位2种,共3×3×2=18种。
   - **五位数**:首位3种,剩余三位排列3!,共3×6=18种。
   - 总计:3 + 9 + 18 + 18 = **48种**。

3. **末位为4**:
   - 计算方式与末位为2完全对称,结果也为**48种**。

**总数**:64(末位0) + 48(末位2) + 48(末位4) = **160种**。

### 答案
**C. 160**

### 讲解教案
1. **明确问题**:用0、1、2、3、4组成无重复数字的多位偶数(两位及以上)。
2. **关键条件**:
   - 偶数末位必须是0、2、4。
   - 首位不能为0。
3. **分类讨论**:
   - **末位为0**:剩余数字自由排列(首位不为0),计算各位数可能。
   - **末位为2或4**:末位固定后,首位从非0数字中选择,中间位可含0。
4. **逐位计算**:
   - 按位数(两位、三位、四位、五位数)分别统计,避免重复或遗漏。
5. **汇总结果**:将三类末位情况的结果相加,得总数160。

通过系统分类和逐位分析,确保所有可能情况被覆盖,最终得出正确答案为**C. 160**。

相关文章:

  • 【笔记】深度学习模型训练的 GPU 内存优化之旅③:内存交换篇
  • 如何降低LabVIEW开发费用
  • 自动剪辑批量混剪视频过原创软件工具视频帧级处理技术实践批量截图解析
  • Leetcode刷题记录25——合并区间
  • 移动光猫 UNG853H 获取超级管理员账号密码
  • 一键解放双手,操作丝滑起飞!
  • Vue3 + OpenLayers 企业级应用进阶
  • 【浅尝Java】Java简介第一个Java程序(含JDK、JRE与JVM关系、javcdoc的使用)
  • matlab 中function的用法
  • 网络分析/
  • 22.2Linux的I2C驱动实验(编程)_csdn
  • 突破zero-RL 困境!LUFFY 如何借离线策略指引提升推理能力?
  • T575729 正经数组
  • mem0 安装与测试:一个强大的对话记忆管理工具
  • 2025五一杯数学建模C题:社交媒体平台用户分析问题,完整第一问模型与求解+代码
  • C语言 指针(2)
  • Winform(7.序列化方式整理)
  • 经济学和奥地利学派的起源
  • 【Java】HashMap
  • 26.电流信号的强抗干扰能力运用
  • 申活观察|咖香涌动北外滩,带来哪些消费新想象?
  • 讲武谈兵|朝鲜“崔贤”号驱逐舰下水,朝版“宙斯盾”战力如何?
  • 新华时评:需要“重新平衡”的是美国心态
  • 五一去哪玩?“时代交响”音乐会解锁艺术假期
  • 聚焦各领域顶尖工匠,《上海工匠》第十季于五一播出
  • 中国人保聘任田耕为副总裁,此前为工行浙江省分行行长