算法基础--穷举

穷举

  1. 找到一个能够穷举的有限集合,适当的去掉一些没必要的项,完成穷举
  2. 熄灯问题:找到一种开关组合使灯全部熄灭
    分析:
    有限集:一个开关只有01两态,循环n次即可
    直接:穷举所有开关状态(0或1),量太大
    优化:根据题意,当第一行(列)开关确定后,为了使最终符合结果,那么下一行的开关也就唯一确定了(为了使上一行全熄灭)。
    因此只需要穷举第一行的所有状态,确定所有开关的状态后,判断最后一行灯的状态是否符合结果即可。
    空间优化:因为灯和开关都只有两个状态(0或1),所有只要用一个bit即可。那么对一行状态只要用一个int来枚举即可,处理时通过获取int的某个二进制位来实现。
  3. 特殊密码锁:熄灯变形http://cxsjsxmooc.openjudge.cn/2017t2summerw1/a/
    分析:
    有限集:一个开关只有两个状态
    优化:当该位不一致时,需要按下一位开关使其符合。因此,依次得到所有开关状态后只要判断最后一位的结果是否符合就可以了。
    难点:当第一位就不同时有两种选择(1按1号开关,2按下一号开关)。因此,对每一个问题都做两次判断,得到最小结果。
  4. 拨钟问题:熄灯问题的变形http://cxsjsxmooc.openjudge.cn/2017t2summerw1/b/
    分析:
    有限集:每个开关有四种状态,且只有9个开关(对应9个钟),直接9重循环
    优化:在第一行确定的情况下,其他的就确定够了,判断最后结果是否符合即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值