枚举法
看似很low,其实很强大!!!
枚举相关概念及性质
- 应用范围:基于已有知识进行答案猜测的思想
- 枚举思想: 猜测
使用枚举需确定三个问题
- 问题一 :
确定解空间,建立简洁的数学模型(可能出现的情况的集合) - 问题二 :
利用所学知识以及题目中的条件减少变量取值范围 - 问题三 :
依据题目确定正确的搜索顺序(搜索空间的遍历顺序要与模型中条件表达式一致)
枚举法举例
问题:求小于N的最大素数
- 问题一
解空间为:
(1)正整数
(2)值大于2
(3)n不能被[2,n)中任意一个素数整除(注意不是n不能被[2,n)中任意一个整数整除) - 问题二
优化解空间:
除2以外的所有偶数,一定不是素数。
即{2,2 * i+1 |1<=i, 2 * i+1 < n } - 问题三
对{2,2 * i+1 |1<=i, 2 * i+1 < n} 按照从小到大的顺序
请尝试如下题目
- 百鸡问题
鸡翁一值钱五, 鸡母一值钱三, 鸡雏三值钱一
百钱买百鸡, 问鸡翁, 鸡母, 鸡雏各几何 - 熄灯问题
- 有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行
- 每个按钮的位置上有一盏灯
- 当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左边, 右边)的灯都会改变一次
- 如果灯原来是点亮的, 就会被熄灭
- 如果灯原来是熄灭的, 则会被点亮
- 对矩阵中的每盏灯设置一个初始状态
- 请你写一个程序, 确定需要按下哪些按钮, 恰好使得所有的灯都熄灭
题目详细思路将在后期加入