算法题目集锦

算法题目集锦

ID:33876968

大小:664.07 KB

页数:58页

时间:2019-02-28

算法题目集锦_第1页
算法题目集锦_第2页
算法题目集锦_第3页
算法题目集锦_第4页
算法题目集锦_第5页
资源描述:

《算法题目集锦》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、算法设计题集第一章算法初步第一节程序设计与算法.时间复杂度:在运行算法时所耗费的时一、算法间为f(n)(即n的函数)。算法是解决问题方法的精确描述,但是并.空间复杂度:实现算法所占用的空间为不是所有问题都有算法,有些问题经研究可行,g(n)(也为n的函数)。则相应有算法,但这并不是说问题就有结果。称O(f(n))和O(g(n))为该算法的复杂度。上述的“可行”,是指对算法的研究。1.待解问题的描述二、程序设计待解问题表述应精确、简练、清楚,使用1.程序形式化模型刻划问题是最恰的。例如,使用程序是

2、对所要解决的问题的各个对象和处数学模型刻划问题是最简明、严格的,一旦问理规则的描述,或者说是数据结构和算法的描题形式化了,就可依据相应严格的模型对问题述,因此有人说,数据结构+算法=程序。求解。2.程序设计2.算法设计程序设计就是设计、编制和调试程序的过算法设计的任务是对各类具体问题设计良程。好的算法及研究设计算法的规律和方法。常用3.结构化程序设计的算法有:穷举搜索法、递归法、回溯法、贪结构化程序设计是利用逐步求精的方法,心法、分治法等。按一套程式化的设计准则进行程序的设计。由3.算法分析这种

3、方法产生的程序是结构良好的。所谓“结算法分析的任务是对设计出的每一个具体构良好”是指:的算法,利用数学工具,讨论各种复杂度,以(1)易于保证和验证其正确性;探讨某种具体算法适用于哪类问题,或某类问(2)易于阅读、易于理解和易于维护。题宜采用哪种算法。按照这种方法或准则设计出来的程序称为算法的复杂度分时间复杂度和空间复杂结构化的程序。度。“逐步求精”是对一个复杂问题,不是一步就编成一个可执行的程序,而是分步进行。数)、g(两数的最大公约数)。.第一步编出的程序最为抽象;处理步骤:对m从2到333检

4、查l与g的商.第二步编出的程序是把第一步所编的程为120,且余数为0时,打印m与667-m。序(如过程、函数等)细化,较为抽象;第一层抽象程序:.……ProgramTwoNum;.第i步编出的程序比第i-1步抽象级要Varm,l,g:integer;低;Beginform:=2to333do.……beginl:=lcm(m,667-m);{求最小.直到最后,第n步编出的程序即为可执公倍数}行的程序。g:=gcd(m,667-m);{求最大公约数}所谓“抽象程序”是指程序所描述的解决if(l=g*

5、120)and(lmodg=0)then问题的处理规则,是由那些“做什么”操作组writeln(m:5,667-m:5);成,而不涉及这些操作“怎样做”以及解决问end;题的对象具有什么结构,不涉及构造的每个局End.部细节。第二层考虑函数lcm(最小公倍数)、gcd这一方法原理就是:对一个问题(或任务),(最大公约数)的细化。程序人员应立足于全局,考虑如何解决这一问最大公约数问题是对参数a、b,找到一个题的总体关系,而不涉及每局部细节。在确保数i能整除a与b,i就是gcd的函数值。全局的正确性

6、之后,再分别对每一局部进行考Function虑,每个局部又将是一个问题或任务,因而这gcd(a,b:integer):integer;一方法是自顶而下的,同时也是逐步求精的。vari:integer;采用逐步求精的优点是:beginfori:=adownto1do(1)便于构造程序。由这种方法产生的ifnot((amodi=0)or(bmod程序,其结构清晰、易读、易写、易理解、易i=0))thengcd:=i;调试、易维护;end;(2)适用于大任务、多人员设计,也便而最小公倍数的计算是:若干

7、个b之和,于软件管理。若能被a整除,则该和便是a、b的最小公倍数。逐步求精方法有多种具体做法,例如流程Function图方法、基于过程或函数的方法。lcm(a,b:integer):integer;[例]求两自然数,其和是667,最小公倍数vari:integer;与最大公约数之比是120:1(例如(115,552)、begini:=b;(232,435))。whileimoda=0doi:=i+b;[解]两个自然数分别为m和667-m(2≤m≤lcm:=i;333)。end;处理对象:m(自然

8、数)、l(两数的最小公倍第二节编程入门题例编程入门题(一)1、位数对调:输入一个三位自然数,把这个数的百位与个位数对调,输出对调后的数。例如:Input3bitnatruedata:234n=432[解]1.先确定输入数n是否三位数,即n>99且n<=999。2.位数对调:n=abc→cba=x①百位数a=n整除100;②十位数b=(n-a*100)整除10;③个位数c=n除以10的余数;3.得对调后的数:x=c*100+b*10+a[程序]{$I-}{输入的数据为整数}programThree

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。