第十课 枚举算法 知识点题库

现实生活中有一类问题可以采用搜索的方法解决,如密码破解、寻找素数等,在搜索的过程中,列举所有可能的结果,并逐一判断,排除其中不符合要求的结果,这种方法称为(      )算法。
A . 顺序 B . 选择 C . 贪心 D . 枚举
我们利用枚举的策略解决问题时,下列说法错误的是(    )
A . 要按一定的顺序枚举 B . 枚举时只可列表,不可画图 C . 要对结果进行比较,做出选择 D . 做到不重复,不遗漏
把问题的所有可能解都一一列举出来,并按照问题要求的条件逐个判断每个答案是否是正确的解,这就是(    )
A . 排序算法 B . 递归算法 C . 迭代算法 D . 枚举算法
现在有36块砖,36人搬。男人每人搬4块,女人每人搬3块,两个小孩搬1块砖。要求一次全搬完。问需男、女、小孩各多少人?

分析:设男、女、小孩人数分别为a、b、c。

  1. (1) 需要满足的条件:=36  =36
  2. (2) 枚举范围:

    男人,最多有人;

    女人,最多有人;

    小孩,最多有人;(小孩人数必须要偶数)

关于枚举算法的说法错误的是(       )
A . 一般是通过循环中嵌套分支结构来实现的。 B . 循环结构用来“枚举”,分支结构用于“检验”。 C . 列举所有可能解的范围时,可以扩大但不能缩小,以防漏解。 D . 采用枚举法时,也可能找不到符合条件的解。
下列适合使用枚举算法解决的是(     )。
A . 判断2021年是否为闰年 B . 计算两个电阻的并联值 C . 计算本次数学考试班级平均分 D . 找出100以内所有的素数
已知在一直角三角形中,直角边a,b为整数,斜边C为不大于50的整数,输入直边a,输出所有满足条件的直角三角形三边a,b,c。解题思路为在斜边C的范围内,检验直角边b是否满足条件。这种算法是(     )
A . 解析算法 B . 枚举算法 C . 查找算法 D . 排序算法
经典的百鸡算法描述是:用100文钱买公鸡、母鸡、小鸡共100只,其中公鸡5文一只,母鸡3文只,小鸡1文钱3只。解决此问题所用到的算法为(     )。
A . 枚举算法 B . 解析算法 C . 查找算法 D . 排序算法
面额为1元、2元和5元的纸币共有10张,求总额恰好为32元取法方案的算法是:设1元取a张、2元取b张和5元取c张,a、b、c都取0到10之间的整数,将a、b、c取值的所有可能组合逐一代入表达式a+2b+5c=32,判断是否成立,若成立,则输出这一方案。此算法属于(    )。
A . 解析算法 B . 枚举算法 C . 递归算法 D . 排序算法
下列VB程序功能可以找出1000以内的完全数,并在标签中一一列出来。

Private Sub Command1_Click()

    Dim i As Integer, m As Integer, n As Integer

    Label1.Caption = "1000以内的完全数如下:"

    For i = 1 To 1000

        n = 0

        For m = 1 To i \ 2

            If i Mod m = 0 Then n = n + m

        Next

        If n = i Then Label2.Caption = Label2.Caption & "" & Str(i)

    Next i

End Sub

该过程采用的算法是(     )

A . 枚举 B . 查找 C . 排序 D . 解析
小李设置了一个3位的密码,百位上二进制,十位上用十进制,个位上十六进制。如果按照枚举算法从每个数位从小到大(即000,001,002……19F)的规则进行尝试,那么找到“15A”这个密码所要尝试的次数是(  )
A . 60 B . 160 C . 250 D . 320
数学中的“自守数”:如果一个数的平方数的末几位等于该数本身,这个数就是自守数。例如:

5*5=25

6*6=36

25*25=625

76*76=5776

……

那么,5、6、25、76 等数被称为自守数。小袁编写一个 VB 程序,实现如下功能:找出 10000 以内所有可能的自守数,单击“统计”按钮 Command1,将符合要求的自守数显示在列表框 List1 中,统计个数显 示在标签 Label1 中,运行界面如图所示。

  1. (1) 程序运行时要在按钮上显示“统计”,应设置该按钮的属性。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim n As Single, k As Integer, t As Integer, c As Integer

        List1.Clear c=0

        For n = 5 To 10000

            k = Len(Trim(n))    'Trim( )函数用于删除字符串前后的空格

            t = (n * n) Mod ①

            If t = n Then

                List1.AddItem Str(n)

                ②

            End If

        Next n

        Label1.Caption = "自守个数为:" + Str(c)

    End Sub

    为实现上述功能,划线处应填入的代码分别为

  3. (3) 解决该问题采用了(选填:枚举/解析)算法。
有如下Python程序段:

s=0

for i in range (1, 101):

    if i%2==0:

       s=s+i

该程序段被执行后,变量s中存储的是1~100之间的(    )。

A . 偶数个数 B . 奇数个数 C . 奇数之和 D . 偶数之和
有10个数据"23,15,51,36,78, 47,39,9,88,96"依次存放在列表a中,使用如下Python程序段找出大于70的数的个数。

a=[23,15,51,36,78,47,39,9,88,96]

n=0

m=70

for i in range (0, 10)

    if   

         n=n+1

print("个数:",n)

程序中画线处的代码应为(     )

A . a[i]>n B . a[i]<n C . a[i]>m D . a[i]<m
假定母鸡每只4元,公鸡每只3元,小鸡每只2角5分,每种鸡都要买。现有100元,要买100只鸡,问有多少种方案。求解这个问题,最适合的算法是(   )
A . 解析 B . 排序 C . 枚举 D . 查找
假定母鸡每只4元,公鸡每只3元,小鸡每只2角5分,每种鸡都要买。现有100元,要买100只鸡,问有多少种方案。求解这个问题,若用枚举法来求解,公鸡数量的枚举范围应为(       )
A . [1,25] B . [1,33] C . [0,100] D . [0,33]
枚举算法需要先确定枚举对象、,然后逐一枚举可能的解,并验证每个解是否为问题的解。
枚举算法流程图如图所示,完成①②③④。

①枚举值在内吗?

②枚举值符合吗?

③输出

④取枚举值

零钱兑换。将一张100元面额的纸币兑换成零钱(5元、10元和20元中的任意多个面额),计算有几种换法。

程序代码:

count=0      #循环计数

for x in range(   ①   ):         #变量x表示20元纸币张数

  for y in range(   ②   ):  #变量y表示10元纸币张数

    if    ③   <=100:

          ④     

print("循环次数:",count)

  1. (1) x取值范围:(x为整数)
  2. (2) y取值范围:(y为整数)
  3. (3) 在横线处填上合适的代码

假定母鸡每只4元,公鸡每只3元,小鸡每只2角5分,每种鸡都要买。现有100元, 要买100只鸡,问有多少种方案。

求解这个问题,若用枚举法来求解,公鸡数量的枚举范围应为(    )

A . [0,100] B . [1,33] C . [0,33] D . [1,25]