数据结构(C语言版) 高佳琴 第10章 常用算法.pptVIP

数据结构(C语言版) 高佳琴 第10章 常用算法.ppt

  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文档。上传文档
查看更多
第十章 常用算法 本章重点: 1.掌握枚举法的算法结构; 2.掌握递推法的算法结构; 3.理解回溯法的算法框架; 4.理解分治法的算法框架. 本章难点: 1.算法分析与设计; 2.回溯法的深度优先搜索策略; 3.分治策略设计技巧。 10 .1 枚举法_1 枚举算法基本思想 : 在可能的解空间中穷举出每一种可能的解,并对每一个可能解进行判断,从而得到问题的答案。 注意: 解空间的划定必须保证覆盖问题的全部解; 解空间集合及问题的解集一定是离散的集合,也就是说集合中的元素是可列的、有限的。 10 .1 枚举法_2 枚举法执行步骤: 1、对于一种可能的情况,计算其结果。 2、判断结果是否满足要求, 如果不满足则执行第(1)步来搜索下一个可能的情况; 如果满足要求,则表示寻找到一个正确的答案,输出答案,回到(1)。 【例10-1】现共有5本新书,要借给A、B、C 3位同学,每人只能借1本书,问可以有多少种不同的借书方法。 【分析】 假设5本书编号为{1,2,3,4,5},每个同学可能借到书的范围就限定在R={1,2,3,4,5}之中。第一个同学有5种可能,第二、三个同学只能有4种和3种可能。这个解集可通过穷举解空间集合中的每一个元素,由判断条件获得。 10 .1 枚举法_3 【例10-1程序清单】 #includestdio.h` void main() { int i,j,k; printf(There are different methods for TOM to distribute his book to A,B,C\n); for(i=1;i=5;i++) for(j=1;j=5;j++) for(k=1;k=5;k++) if(i!=jj!=ki!=k) { printf((%d,%d,%d) ,i,j,k); } } 10 .1 枚举法_4 【例10-1测试数据】 10 .1 枚举法_5 【例10-2】寻找[1,100]之间的素数。 【分析】 在[1,100]中对每一个整数进行判断,看它是不是素数。在这里,问题的解空间自然就是[1,100]中的全部整数。算法描述如下: for(i=1;i=100;i++) if (i是素数) 输出i ; 10 .1 枚举法_6 【例10-2程序清单】 #includestdio.h int isPrime(int n) { int i; for(i=2;in;i++) { if(n%i==0) return 0; } return 1; } void getPrime(int low,int high) { int i; for(i=low;i=high;i++) if(isPrime(i)) printf(%d ,i); printf(\n); } void main() { int low,high ; printf(Please input the domain for searching prime\n); printf(low limitation:); scanf(%d,low); printf(high limitation:); scanf(%d,high); printf(The whole prime in the domain are\n); getPrime(low,high); } 10 .1 枚举法_7 【思考与知识扩展】 枚举法用时间上的牺牲换来了解的全面性保证。因此,枚举法的优势在于确保得到问题的全部解,而瓶颈在于运算效率十分低下。但是穷举法算法思想简单,易于实现,在解决一些规模不是很大的问题上,使用穷举法不失为一种很好的选择。另外,随着计算机硬件性能的不断改善,CPU 运算速度的不断提高,以及多处理器并行计算技术的发展,穷举法的形象已经不再是最低原始的无奈之举,它将越来越为人们所重视。 利用枚举法设计算法的两个要素:一是解空间可列离散、二是规模不能太大。 10 .1 枚举法_8 10.2 递推法_1 递推算法基本思想: 递推是利用问题本身所具有的递推关系求解问题的方法。基本思想是把一个复杂的大的计算过程转化为简单过程的多次重复,从头开始

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档