MOOC-大学计算机基础CAP典型问题求解7.1-枚举

138 阅读2分钟

1、问题一:枚举法求解

问题:
某班有四位同学,其中的一位做了好事不留名,表扬信赖了之后,班主任问这四位是谁做的好事。
    秦政说:不是我
    秦明说:张根干的
    张根说:是张潇
    张潇说:张根胡说
已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。

求解:依次假设每一个人为真进行判断

BYOB程序如下:
    1为秦政、2为秦明、3为张根、4为张潇  

image.png

2、双重循环实现穷举

一只老鼠咬坏了账本,公式中X代表是被老鼠咬坏的地方。要想恢复下面的等式,X代表的是哪个数字?
                    5x*4158=x3*3564
                                     
BYOB程序如下: 

image.png

3、数学中的问题求解与计算机中的问题求解

问题:
  公鸡每只值5文钱,母鸡每只值3文钱,而3只小鸡值1 文钱。用100 文钱买100 只鸡。 
  问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?
  
数学求解:

image.png

计算机求解:利用双重循环穷举出满足条件的值

image.png

4、两种求解方式的差别

数学求解方法:
1.利用数值之间的等价关系进行代换
计算机问题求解:
1.枚举出所有可能的实例,逐一检查其是否满足条件
2.自动化
3.发挥了计算机的优势

5、枚举法

是一种非常直观、简洁的计算机问题求解方法
1、基本思想
    利用计算机运算速度快,精确度高的特点
    枚举所有可能的情况,逐个检验,找出符合要求的答案
2、要素
    枚举对象
    枚举范围
    判断条件
3、算法设计
    枚举的实例的表示
    确保枚举遍历所有的实例
    循环结构、选择结构
4、优点
    算法简单
    充分发挥了计算机的优势
5、缺点
    针对复杂的问题,枚举的组合太多
6、适合的问题
    问题所涉及的实例是确定的
    实例需要满足一定的条件,才能成为问题的答案