- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法在信息学奥赛中的应用 (基础篇)
学习过程序设计的人对算法这个词并不陌生,从广义上讲,算法是指为解决一个问题而采用的方法和步骤;从程序计设的角度上讲,算法是指利用程序设计语言的各种语句,为解决特定的问题而构成的各种逻辑组合。我们在编写程序的过程就是在实施某种算法,因此程序设计的实质就是用计算机语言构造解决问题的算法。算法是程序设计的灵魂,一个好的程序必须有一个好的算法,一个没有有效算法的程序就像一个没有灵魂的躯体。
算法具有五个特征:
1、有穷性: 一个算法应包括有限的运算步骤,执行了有穷的操作后将终止运算,不能是个死循环;
2、确切性: 算法的每一步骤必须有确切的定义,读者理解时不会产生二义性。并且,在任何条件下,算法只有唯一的一条执行路径,对于相同的输入只能得出相同的输出。如在算法中不允许有“计算8/0”或“将7或8与x相加”之类的运算,因为前者的计算结果是什么不清楚,而后者对于两种可能的运算应做哪一种也不知道。
3、输入:一个算法有0个或多个输入,以描述运算对象的初始情况,所谓0个输入是指算法本身定义了初始条件。如在5个数中找出最小的数,则有5个输入。
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果,这是算法设计的目的。它们是同输入有着某种特定关系的量。如上述在5个数中找出最小的数,它的出输出为最小的数。如果一个程序没有输出,这个程序就毫无意义了;
5、可行性: 算法中每一步运算应该是可行的。算法原则上能够精确地运行,而且人能用笔和纸做有限次运算后即可完成。
如何来评价一个算法的好坏呢?主要是从两个方面:
一是看算法运行所占用的时间;我们用时间复杂度来衡量,例如:在以下3个程序中,
(1)x:=x+1
(2)for i:=1 to n do
x:=x+1
(3)for i:=1 to n do
for j:=1 to n do
x:=x+1
含基本操作“x增1”的语句x:=x+1的出现的次数分别为1,n和n2则这三个程序段的时间复杂度分别为O(1),O(n),O(n2),分别称为常量阶、线性阶和平方阶。在算法时间复杂度的表示中,还有可能出现的有:对数阶O(log n),指数阶O(2n)等。在n很大时,不同数量级的时间复杂度有:O(1) O(log n)O(n) O(nlog n)O(n2) O(n3) O(2n),很显然,指数阶的算法不是一个好的算法。
二是看算法运行时所占用的空间,既空间复杂度。由于当今计算机硬件技术发展很快,程序所能支配的自由空间一般比较充分,所以空间复杂度就不如时间复杂度那么重要了,有许多问题人们主要是研究其算法的时间复杂度,而很少讨论它的空间耗费。
时间复杂性和空间复杂性在一定条件下是可以相互转化的。在中学生信息学奥赛中,对程序的运行时间作出了严格的限制,如果运行时间超出了限定就会判错,因此在设计算法时首先要考虑的是时间因素,必要时可以以牺牲空间来换取时间,动态规划法就是一种以牺牲空间换取时间的有效算法。对于空间因素,视题目的要求而定,一般可以不作太多的考虑。
我们通过一个简单的数值计算问题,来比较两个不同算法的效率(在这里只比较时间复杂度)。
例:求N!所产生的数后面有多少个0(中间的0不计)。
算法一:从1乘到n,每乘一个数判断一次,若后面有0则去掉后面的0,并记下0的个数。为了不超出数的表示范围,去掉与生成0无关的数,只保留有效位数,当乘完n次后就得到0的个数。(pascal程序如下)
var i,t,n,sum:longint;
begin
t:=0; sum:=1;
readln(n);
for i:=1 to n do
begin
sum:=sum*i;
while sum mod 10=0 do
begin
sum:=sum div 10;
inc(t);{计数器增加1}
end;
sum:=sum mod 1000;{舍去与生成0无关的数}
end;
writeln(t:6);
end.
算法二:此题中生成O的个数只与含5的个数有关,n!的分解数中含5的个数就等于末尾O的个数,因此问题转化为直接求n!的分解数中含5的个数。
var t,n:integer;
begin
readln(n);
t:=0;
repeat
n:=n div 5 ;
inc(t,n); {计数器增加n}
until n5;
writeln(t:6);
end.
分析对比两种算法就不难看出,它们的时间复杂度分别为O(N)、O(logN),算法二的执行时间远远小于算法一的执行时间。
在信息学奥赛中,其主要任务就是设计一个有效的算法,去求解所给出的问题。如果
您可能关注的文档
- 第九章 高级计算机网络1.pdf
- 维修电工初级接线幻灯片.doc
- 存储过程与触发器模版.doc
- 第5讲 傅里叶变换应用于通信系统.pdf
- 英飞凌tricore用户手册 第4章 片上总线与总线桥.pdf
- 第五章 Tivaware使用入门指导.pdf
- 2012年计算机四级网络工程师第五套模拟试题和答案.doc
- 软件测试策略及过程.ppt
- 信用衍生产品定价理论文献综述资料.pdf
- 宽带数据网基础知识讲座第2讲_数字信号基本概念.pdf
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
最近下载
- 设备安装调试及培训方案.docx VIP
- 2025届高考数学一轮复习备考建议课件——以“立体几何”为例.pptx
- 印刷-包装印刷培训资料.ppt
- 湖南省中小企业融资难的表现、原因以及对策.docx
- 安徽省芜湖市第二十七中学2024--2025学年上学期七年级入学测试数学卷(含答案).pdf VIP
- 年产250万吨薄板坯连铸连轧带钢生产线工艺设计剖析.docx
- 2022年新疆高考文科数学真题及答案.doc VIP
- 国家中小学智慧教育平台应用指南.pptx VIP
- 人教版七年级道法下册 第四单元第十一课 远离违法犯罪(上课、学习课件).pptx VIP
- 2024年N1叉车司机考试题及答案(1000题).doc
文档评论(0)