基础算法第一节

枚举法

看似很low,其实很强大!!!

枚举相关概念及性质
  • 应用范围:基于已有知识进行答案猜测的思想
  • 枚举思想: 猜测
使用枚举需确定三个问题
  1. 问题一 :
    确定解空间,建立简洁的数学模型(可能出现的情况的集合)
  2. 问题二 :
    利用所学知识以及题目中的条件减少变量取值范围
  3. 问题三 :
    依据题目确定正确的搜索顺序(搜索空间的遍历顺序要与模型中条件表达式一致)
枚举法举例

问题:求小于N的最大素数

  1. 问题一
    解空间为:
    (1)正整数
    (2)值大于2
    (3)n不能被[2,n)中任意一个素数整除(注意不是n不能被[2,n)中任意一个整数整除)
  2. 问题二
    优化解空间:
    除2以外的所有偶数,一定不是素数。
    即{2,2 * i+1 |1<=i, 2 * i+1 < n }
  3. 问题三
    对{2,2 * i+1 |1<=i, 2 * i+1 < n} 按照从小到大的顺序
请尝试如下题目
  1. 百鸡问题
    鸡翁一值钱五, 鸡母一值钱三, 鸡雏三值钱一
    百钱买百鸡, 问鸡翁, 鸡母, 鸡雏各几何
  2. 熄灯问题
  • 有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行
  • 每个按钮的位置上有一盏灯
  • 当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左边, 右边)的灯都会改变一次
  • 如果灯原来是点亮的, 就会被熄灭
  • 如果灯原来是熄灭的, 则会被点亮
  • 对矩阵中的每盏灯设置一个初始状态
  • 请你写一个程序, 确定需要按下哪些按钮, 恰好使得所有的灯都熄灭
题目详细思路将在后期加入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值