编程常用算法

编程常用算法

ID:41033191

大小:331.00 KB

页数:29页

时间:2019-08-14

编程常用算法_第1页
编程常用算法_第2页
编程常用算法_第3页
编程常用算法_第4页
编程常用算法_第5页
资源描述:

《编程常用算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、算法设计题集第一章算法初步第一节程序设计与算法一、算法算法是解决问题方法的精确描述,但是并不是所有问题都有算法,有些问题经研究可行,则相应有算法,但这并不是说问题就有结果。上述的“可行”,是指对算法的研究。1.待解问题的描述待解问题表述应精确、简练、清楚,使用形式化模型刻划问题是最恰当的。例如,使用数学模型刻划问题是最简明、严格的,一旦问题形式化了,就可依据相应严格的模型对问题求解。2.算法设计算法设计的任务是对各类具体问题设计良好的算法及研究设计算法的规律和方法。常用的算法有:穷举搜索法、递归法、回溯法、贪心法、分治法等。3.算法分析算法分析的任务是对设计出的每一个具体的

2、算法,利用数学工具,讨论各种复杂度,以探讨某种具体算法适用于哪类问题,或某类问题宜采用哪种算法。算法的复杂度分时间复杂度和空间复杂度。.时间复杂度:在运行算法时所耗费的时间为f(n)(即 n的函数)。.空间复杂度:实现算法所占用的空间为g(n)(也为n的函数)。称O(f(n))和O(g(n))为该算法的复杂度。二、程序设计1.程序程序是对所要解决的问题的各个对象和处理规则的描述,或者说是数据结构和算法的描述,因此有人说,数据结构+算法=程序。2.程序设计程序设计就是设计、编制和调试程序的过程。3.结构化程序设计结构化程序设计是利用逐步求精的方法,按一套程式化的设计准则进行程

3、序的设计。由这种方法产生的程序是结构良好的。所谓“结构良好”是指:(1)易于保证和验证其正确性;(2)易于阅读、易于理解和易于维护。按照这种方法或准则设计出来的程序称为结构化的程序。“逐步求精”是对一个复杂问题,不是一步就编成一个可执行的程序,而是分步进行。.第一步编出的程序最为抽象;.第二步编出的程序是把第一步所编的程序(如过程、函数等)细化,较为抽象;.…….第i步编出的程序比第i-1步抽象级要低;.…….直到最后,第n步编出的程序即为可执行的程序。所谓“抽象程序”是指程序所描述的解决问题的处理规则,是由那些“做什么”操作组成,而不涉及这些操作“怎样做”以及解决问题的对

4、象具有什么结构,不涉及构造的每个局部细节。这一方法原理就是:对一个问题(或任务),程序人员应立足于全局,考虑如何解决这一问题的总体关系,而不涉及每局部细节。在确保全局的正确性之后,再分别对每一局部进行考虑,每个局部又将是一个问题或任务,因而这一方法是自顶而下的,同时也是逐步求精的。采用逐步求精的优点是:(1)便于构造程序。由这种方法产生的程序,其结构清晰、易读、易写、易理解、易调试、易维护;(2)适用于大任务、多人员设计,也便于软件管理。逐步求精方法有多种具体做法,例如流程图方法、基于过程或函数的方法。[例]求两自然数,其和是667,最小公倍数与最大公约数之比是120:1(

5、例如(115,552)、(232,435))。[解]两个自然数分别为m和667-m(2≤m≤333)。处理对象:m(自然数)、l(两数的最小公倍数)、g(两数的最大公约数)。处理步骤:对m从2到333检查l与g的商为120,且余数为0时,打印m与667-m。第一层抽象程序:ProgramTwoNum;Varm,l,g:integer;Beginform:=2to333dobeginl:=lcm(m,667-m);{求最小公倍数}g:=gcd(m,667-m);{求最大公约数}if(l=g*120)and(lmodg=0)thenwriteln(m:5,667-m:5);en

6、d;End.第二层考虑函数lcm(最小公倍数)、gcd(最大公约数)的细化。最大公约数问题是对参数a、b,找到一个数i能整除a与b,i就是gcd的函数值。Functiongcd(a,b:integer):integer;vari:integer;beginfori:=adownto1doifnot((amodi=0)or(bmodi=0))thengcd:=i;end;而最小公倍数的计算是:若干个b之和,若能被a整除,则该和便是a、b的最小公倍数。Functionlcm(a,b:integer):integer;vari:integer;begini:=b;whileimo

7、da=0doi:=i+b;lcm:=i;end;第二节编程入门题例编程入门题(一)1、位数对调:输入一个三位自然数,把这个数的百位与个位数对调,输出对调后的数。例如:Input3bitnatruedata:234 n=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-}{输入的数据为整数}progra

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

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

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