程序设计与实习-枚举

MOOC笔记

11.1 枚举的基本思想

枚举是不断猜测的过程 从可能的集合中一一列举个元素 判断新的猜测是否是正确答案

*例子1 找素数

思路 记2为PRIM0 寻找比PRIMk大的最小素数PRIMk+1 如果PRIMk+1大于N 那么PRIMk+1是解

新的猜测中两个关键因素: 1)猜测的结果必须是之前没有出现过的 新的猜测一定比之前的素数大 2)及时排除错误答案 除2之外只能是奇数

关键问题 1) 给出解空间 建立简洁的数学模型 模型中变量数尽可能少 它们之间互相独立 条件是“n不能被大于2的素数整除”而不是“n不能被大于2的整数整除” 2) 减少搜索空间 利用知识缩小模型中个变量的取值范围 避免不必要的计算 减少代码中循环体执行次数:除2之外的数只有奇数可能是素数 3) 采用合适的搜索顺序 搜索空间的遍历顺序要和模型中条件表达式一致

*例子2 百钱买百鸡

张丘建《算经》鸡翁一值钱五 鸡母一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁鸡母鸡雏各几何?

思路 构造解集0<=X,Y,Z<=100  验证条件X+Y+Z=100 5X+3Y+Z/3=100 复杂度O(100^2)




问题集合

1)复杂度怎么计算



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值