- 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.掌握枚举法的算法结构;
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
递推算法基本思想:
递推是利用问题本身所具有的递推关系求解问题的方法。基本思想是把一个复杂的大的计算过程转化为简单过程的多次重复,从头开始
您可能关注的文档
最近下载
- 2025年辽宁省初中学业水平考试英语模拟试卷试题(含答案).pdf VIP
- 螺纹联接与螺旋传动介绍.ppt VIP
- 《大学美育》教案 第13课 光影流转的传奇 影视之美(二).docx VIP
- 小学生3500个常用汉字归类(带拼音).pdf VIP
- 《大学美育》教案 第12课 光影流转的传奇 影视之美(一).docx VIP
- 《大学美育》教案 第11课 五彩缤纷的世界:绘画之美(二).docx VIP
- Dahua大华以太网交换机(桌面式管理型)_WEB使用说明书_V1.0.0.pdf
- 党校中级考试资料.docx VIP
- (2025秋新版)人教版三年级数学上册全册教案.docx
- 智能体@AEI:Agentic Al,开启企业融合智简运维新范式.pdf
文档评论(0)