- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
day4递归分治-林厚从
递归分治
常州市第一中学 林厚从
JSOI2014夏令营 14-7-7
目 录
1 分治思想及举例
2 递归算法初步
3 递归算法分析
4 递归分治应用举例
JSOI2014夏令营 14-7-7
一、分治思想
例1、找伪币
[问题述]
给你一个装有16个硬币的袋子,16个硬币中有一个是伪造的,并且那个伪造的硬
币比真的硬币要轻一些。
你的任务是找出这个伪造的硬币。
为了帮助你完成这一任务,将供一台可用来比较两组硬币重量的仪器,利用
这台仪器,可以知道两组硬币的重量是否相同。
[问题分析]
方法1:
暴力枚举,依次比较硬币1与硬币2、硬币3和硬币4,……最多通过8次比较来
判断伪币的存在并找出这一伪币。
JSOI2014夏令营 14-7-7
一、分治思想
方法2:
利用二分的思想,把16个硬币的情况看成一个大问题。
第一步,把这一大问题分成两个小问题,随机选择8个硬币作为第一组,称为
A组,剩下的8个硬币作为第二组,称为B组。
第二步,判断伪币在A组还是在B组中,如果在A组中,则再把A组中的8个硬币
随机分成2组,每组4个再去比较,……
这样,只要(必须)4次比较一定能找出伪币。
方法3:
利用三分的思想,把16个硬币分成3组(A组5个、B组5个、C组6个)。
称一次判断出伪币在A、B、C哪一组中,假如在C组中,则再把C组中的6个分成
3组(2个、2个、2个),称一次判断出在哪一组,然后再称1次就能找出伪币,……
这样,只要2-3次比较便能找出伪币。
JSOI2014夏令营 14-7-7
一、分治思想
小结:
一是解题思想和方法的多样性,要善于比较和创新;
二是有些算法在最优和最差情况下的复杂度区别巨大,往往依赖于
输入数据或者处理的先后顺序,而有些算法的复杂度则是比较稳定的,
这一点要注意分析。
JSOI2014夏令营 14-7-7
一、分治思想
例2、循环比赛日程表
[问题述]
设有n个选手的循环比赛 (n=2^m),要求每名选手要与其他n-1名选手都赛一次。
每名选手每天比赛一次,循环赛共进行n-1天,要求每天没有选手轮空。以下是8名
选手时的循环比赛表,表中第一行为8位选手的编号,下面7行依次是每位选手每天
的对手。
JSOI2014夏令营 14-7-7
一、分治思想
[问题分析]
1 2 3 4 5 6 7 8
——观察:对称性 2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
——思考:分
文档评论(0)