算法分析和设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
- 重庆邮电大学研究生堂下考试答卷 2013学年 第 1 学期 考试科目 算法分析与设计 姓 名 许 江 华 学 号 s130101200 专 业 通 信 与 信 息 工 程 得 分 2013年 12 月 1 日 第一题 一、问题的提出 某国王对囚犯进行大赦,让一名狱吏次通过一排锁着的间房,每通过一次,按所定规则转动间牢房中的某些门锁,每转动一次,原来锁着的门被打开,原来打开的门被锁上,通过次后,门锁打开的,牢房中的犯人得以释放,否则犯人不得释放。 转动门锁的规则是这样的:第一次通过牢房,从第1间房开始要转动每一把锁,即把全部锁打开;第二次通过牢房时,从第二间房开始转动,每隔一间开始转动............;第次通过牢房时,从第间房开始转动,但每隔间转动一次;问通过次后,哪些牢房的锁仍然是打开的? 问题的求解1 A、算法分析设计: 1)由学习的数组技巧,可以想到设置个元素的一维数组,用每个元素记录每把锁的状态,1表示被锁上,0表示被打开。 2)用数学运算技巧,用数学运算模拟开关锁的技巧,“对第锁进行一次开关锁”可以转化为算术运算。 3)由题意知,得到每次转动的具体牢房号如下: 第一次转动的是1,2,3,4,5,6,7,8,9.............号牢房; 第二次转动的是2.4.6.8,9.........号牢房; 第三次转动的是3,6,9,...........号牢房; ............................ 第转动的是号牢房,他们的起点是,公差为的等差数列。 综上所述,不做其他的优化,数组元素的初值均为1,用蛮力法通过循环模拟狱吏的开关锁过程,最后当第号牢房对应的数组元素为0时,该牢房的囚犯得到释放。 B、算法效率的分析 算法1的策略是蛮力算法,模拟了狱吏开关锁的全过程。主要操作是,由一次开关锁计算,算法的时间复杂度为: 。 三、问题的求解 2 A、算法分析与设计: 将以上蛮力法加入更多的人脑思维,转动门锁的规则可以有另一种的理解,第一次转动的是编号为1的倍数的牢房;第二次转动的是编号为2 的倍数的牢房;第三次转动的是编号为3 的倍数的牢房........则狱吏转动门锁的问题是一个关于因子个数的问题。 令为自然数的因子个数,这里不重复计算重复的因子,如4的因子为1,2,4共三个,而并不是1,2,3,4.则对于不同的,有的为奇数,有的为偶数,见下表1: 表1 编号与因子个数的关系 n 1 2 3 4 5 6 7 8 9 10 11 。。。 1 2 2 3 2 4 2 4 3 4 2 . 。。。 表1中的有的额奇数,有的为偶数,由于牢房的门开始是关着的,这样编号的为的牢房,所含1到之间的不重复的因子个数为奇数时,牢房最后是打开的,反之,牢房是关闭的。 由以上的分析,算法应该是求出每个牢房编号的不重复的因子个数,当它为奇数时,这里边的囚犯得到大赦。由于一个数的因子没有规律可循,只能从1到枚举尝试。 B算法的效率分析: 算法1的策略是蛮力算法,模拟了狱吏开关锁的全过程。主要操作是,时间的近似复杂度为。使用了个空间的一维数组。而算法2没有使用辅助空间,但是求一个编号的因子个数也很复杂,其主要操作是是否为0,总共执行了次,时间复杂度为。由此可见,蛮力法并不总是因为减少了人脑的思维,就一定是效率最差的算法。对规模不是很大大的问题,蛮力法还是一直比较好的算法策略。 问题的求解3 A算法的分析与设计 仔细观察表1,不难发现这样的一个规律,当且仅当为完全平方数时,为奇数。这是因为非完全平方数的因子总是成对出现,当是的因子时,一定也是的因子。为非完全平方数时,为非完全平方数时 ,所以,因此的因子总是成对出现的。而当 为完全平方数时,即,无论是否为素数,的因子总是单独出现的,其他因子对总是成对出现的,因此为奇数。 例如:6 的因子为两对; 而25的因子为;36的因子为。 B算法的效率分析 该算法无需存储任何数据,只需依次判断是否为平方数,基本操作为判断所以判断次数为算法的时间复杂度为线性的即。 算法的模拟仿真结果及其结果分析 在VC++仿真平台上编程进行仿真,运用计时函数对三种不同算法就两种规模分别为1500和50000进行计时,如图所示: 算法1 的仿真结果: 算法2的仿真结果: 算法3仿真结

文档评论(0)

liyxi26 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档