#P1069. 枚举与模拟专题训练

枚举与模拟专题训练

  1. 枚举算法的核心思想是({{ select(1) }})。
  • 将大问题分解为若干个子问题分别求解
  • 逐个尝试所有可能的候选解,并依据条件验证其是否为正确解
  • 每次选择当前状态下的最优决策,从而期望达到全局最优
  • 通过已知的前一个状态逐步递推出下一个状态
  1. 在 1 到 100 之间找出所有既能被 3 整除又能被 5 整除的数,最直接、最符合直觉的算法是({{ select(2) }})。
  • 模拟法
  • 枚举法
  • 递推法
  • 二分法
  1. 模拟法解决问题时的主要特点是({{ select(3) }})。
  • 必须通过高深的数学推导得出简化的计算公式
  • 严格按照题目中规定的具体操作步骤、物理过程或规则进行编程重现
  • 其执行效率在任何情况下都远高于枚举法
  • 只能处理简单的数值计算,无法处理文本字符逻辑
  1. 使用枚举法求四位数 abcd\overline{abcd} 中满足“百位和十位数相同(即 b==cb == c)”的数,循环变量的最佳合理范围是({{ select(4) }})。
  • 0 ~ 9999
  • 1000 ~ 9999
  • 100 ~ 999
  • 1000 ~ 9000
  1. 冒泡排序的核心逻辑是通过相邻元素的比较与交换,逐步将最大或最小值移到数组的一端。这种按照既定物理移动规则逐步迭代解决问题的过程,主要体现了哪种基础算法的思想?({{ select(5) }})
  • 模拟
  • 二分
  • 递归
  • 分治
  1. 枚举算法实现起来非常直观,但当可能解的空间异常庞大时,容易导致程序运行超时。({{ select(6) }})
  • 正确
  • 错误
  1. 模拟算法往往不需要复杂的数学公式推导,主要考验程序员将题目中的实际过程翻译为代码的能力。({{ select(7) }})
  • 正确
  • 错误
  1. 使用枚举法解决“百钱买百鸡”问题时,为了找出所有解,必须编写三层嵌套循环分别枚举公鸡、母鸡和小鸡的数量。({{ select(8) }})
  • 正确
  • 错误
  1. 在编写模拟算法时,选择合适的数据结构(如用二维数组模拟棋盘或网格)来重现题目场景是至关重要的。({{ select(9) }})
  • 正确
  • 错误
  1. 只要一个 C++ 程序中包含了 forwhile 循环结构,就说明该程序使用的算法一定是枚举法。({{ select(10) }})
  • 正确
  • 错误