- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
算法分析与设计1蛮力法
蛮力法BruteForce蛮力法(枚举法、穷举法,暴力法)要求设计者找出所有可能的方法,然后选择其中的一种方法,若该方法不可行则试探下一种可能的方法。蛮力法是一种直接解决问题的方法,常常直接基于问题的描述和所设计的概念定义。“力”--指计算机的能力,而不是人的智力。蛮力法常常是最容易应用的方法。求an(n为非负整数)用连续整数检测算法计算GCD(m,n)
蛮力法BruteForce蛮力法不是一个最好的算法(巧妙和高效的算法很少出自蛮力),但当我们想不出更好的办法时,它也是一种有效的解决问题的方法。它可能是惟一一种几乎什么问题都能解决的一般性方法,常用于一些非常基本、但又十分重要的算法,比如计算n个数字的和,求一个列表的最大元素等等。
蛮力法的优点算法分析与设计4逻辑清晰,编写程序简洁对于一些重要的问题(比如:排序、查找、矩阵乘法和字符串匹配),可以产生一些合理的算法解决问题的实例很少时,可以花费较少的代价可以解决一些小规模的问题(使用优化的算法没有必要,而且某些优化算法本身较复杂)可以作为其他高效算法的衡量标准32145
使用蛮力法的几种情况算法分析与设计5搜索所有的解空间01直接计算03搜索所有的路径02模拟和仿真04
比较熟悉的蛮力法应用算法分析与设计6顺序查找:从线性表的一端向另一端逐个将关键码与给定值进行比较,若相等,则查找成功,给出该记录在表中的位置;若整个表检测完仍未找到与给定值相等的关键码,则查找失败,给出失败信息。蛮力字符串匹配:即朴素模式串匹配顺序查找和蛮力字符串匹配选择排序和起泡排序选择排序:每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中。起泡排序:两两比较相邻记录关键码,如果反序则交换,直到没有反序的记录为止。
蛮力法解题步骤算法分析与设计7根据问题中的条件将可能的情况一一列举出来,逐一尝试从中找出满足问题条件的解。但有时一一列举出的情况数目很大,如果超过了我们所能忍受的范围,则需要进一步考虑,排除一些明显不合理的情况,尽可能减少问题可能解的列举数目。用蛮力法解决问题,通常可以从两个方面进行算法设计:找出枚举范围:分析问题所涉及的各种情况。找出约束条件:分析问题的解需要满足的条件,并用逻辑表达式表示。
【例1】百钱百鸡问题。中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?算法设计1:通过对问题的理解,可能会想到列出两个三元一次方程,去解这个不定解方程,就能找出问题的解。这确实是一种办法,但这里我们要用“懒惰”的枚举策略进行算法设计:设x,y,z分别为公鸡、母鸡、小鸡的数量。尝试范围:由题意给定共100钱要买百鸡,若全买公鸡最多买100/5=20只,显然x的取值范围1~20之间;同理,y的取值范围在1~33之间,z的取值范围在1~100之间。约束条件:x+y+z=100且5*x+3*y+z/3=100
算法分析与设计9算法1如下:main()
{intx,y,z;
?for(x=1;x=20;x=x+1)
??for(y=1;y=34;y=y+1)
???for(z=1;z=100;z=z+1)
?????if(100==x+y+z100==5*x+3*y+z/3)
???{print(thecocknumberis,x);print(thehennumberis,y);print(thechicknumberis,z);}
}枚举尝试20*34*100=68000次
算法分析与设计10算法设计2:在公鸡(x)、母鸡(y)的数量确定后,小鸡?的数量?z就固定为100-x-y,无需再进行枚举了?此时约束条件只有一个:5*x+3*y+z/3=100
??算法2如下:
算法分析与设计11main()
{?intx,y,z;
????for(x=1;x=20;x=x+1)??????????????
????????for(y=1;y=33;y=y+1)??????????????????{?z=100-x-y;????????????
?????????if(z%3==05*x+3*y+z/3==100)????????????????????{print(thecocknumberis,x); print(thehennumberis,y); print(thechicknumberis,z);}
????????}
}枚举尝试20*33=660次Z能被3整除时,才会判断“5*x+3*y+z/3
您可能关注的文档
最近下载
- SYB创业专题计划书模板第二版.pdf VIP
- 湖北自考工程造价和管理07138知识点汇总.doc VIP
- 模拟电子学基础(第二版)陈光梦习题解答.pdf
- 北师大版高二英语必修五教案unit15Lesson1LifelongLearning.doc VIP
- 电梯安装施工方案无脚手架.doc VIP
- 巧用对比篇-2024年中考语文作文写作技巧精讲课堂.pptx
- 电焊应急预案及处置方案.docx VIP
- 高空作业安全监理实施细则.pdf VIP
- 制药专用控制系统系列:Rockwell Automation PharmaSuite_(2).PharmaSuite系统架构与组件.docx VIP
- 制药专用控制系统系列:Rockwell Automation PharmaSuite_(3).PharmaSuite在制药行业的应用案例.docx VIP
原创力文档


文档评论(0)