1、问题一:枚举法求解
问题:
某班有四位同学,其中的一位做了好事不留名,表扬信赖了之后,班主任问这四位是谁做的好事。
秦政说:不是我
秦明说:张根干的
张根说:是张潇
张潇说:张根胡说
已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。
求解:依次假设每一个人为真进行判断
BYOB程序如下:
1为秦政、2为秦明、3为张根、4为张潇
2、双重循环实现穷举
一只老鼠咬坏了账本,公式中X代表是被老鼠咬坏的地方。要想恢复下面的等式,X代表的是哪个数字?
5x*4158=x3*3564
BYOB程序如下:
3、数学中的问题求解与计算机中的问题求解
问题:
公鸡每只值5文钱,母鸡每只值3文钱,而3只小鸡值1 文钱。用100 文钱买100 只鸡。
问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?
数学求解:
计算机求解:利用双重循环穷举出满足条件的值
4、两种求解方式的差别
数学求解方法:
1.利用数值之间的等价关系进行代换
计算机问题求解:
1.枚举出所有可能的实例,逐一检查其是否满足条件
2.自动化
3.发挥了计算机的优势
5、枚举法
是一种非常直观、简洁的计算机问题求解方法
1、基本思想
利用计算机运算速度快,精确度高的特点
枚举所有可能的情况,逐个检验,找出符合要求的答案
2、要素
枚举对象
枚举范围
判断条件
3、算法设计
枚举的实例的表示
确保枚举遍历所有的实例
循环结构、选择结构
4、优点
算法简单
充分发挥了计算机的优势
5、缺点
针对复杂的问题,枚举的组合太多
6、适合的问题
问题所涉及的实例是确定的
实例需要满足一定的条件,才能成为问题的答案