欢迎来到天天文库
浏览记录
ID:51960896
大小:384.86 KB
页数:49页
时间:2020-03-26
《算法初步(基于C语言).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章计算机算法初步3.3递推与迭代法3.2穷举法3.1算法的概念3.1算法的概念利用计算机求解问题的一般过程(1)问题分析阶段(2)数据结构设计阶段(3)算法设计阶段(4)编码与调试阶段算法描述在计算机科学的发展过程中,人们已经提出了很多种类的算法描述方法。一种是自然语言的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。还有一种算法的图形描述方式——流程图。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。起止框I/O框处理框判断框调
2、用框连接框有向边常用流程图符号例1:求解一元二次方程问题分析假设一元二次方程可以书写成ax2+bx+c=0。可以看出,任何一个一元二次方程都由三个系数a、b、c惟一确定,所以,首先需要用户输入三个系数,然后再根据一元二次方程的求解规则计算最终的结果,并将结果显示输出。算法描述#include#includemain(){inta,b,c,t;printf(“Inputa,b,c:”);scanf(“%d%d%d”,&a,&b,&c);t=b*b–4*a*c;if(
3、t<0)printf(“Nosolution”);elseif(t==0)printf(“X=%lf”,-b/(2.0*a));else{doublet0;t0=sqrt((double)t);printf(“X1=%lf,X2=%lf”,(-b+t0)/(2*a),(-b-t0)/(2*a));}}程序代码3.2穷举法概述穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。例如,从某个班中找出所有班干部,需要逐一对每个同学进行查看,判断是否是班干部。这种方法的基本思路就是
4、一一列举每个可能性,逐个进行排查。因此,穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。穷举法应用实例1:素数的判断所谓素数是指仅能被1和自身整除,且大于等于2的数值。判断一个给定的数值是否是素数是穷举法的典型实例。例2:判断给定整数是否是素数。问题分析为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2~x-1之间的任何整数。这就需要一一列举出2~x-1之间的每个整数进行排查。算法描述NY开始输入x2
5、ttmain(){intx,t;printf(“Enteraninteger:”);scanf(“%d”,&x);for(t=2;t6、钱买百鸡“百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。例3:百钱买百鸡。问题分析从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。因此,可以采用穷举法,将不同的7、公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。算法描述#include#includemain(){intx,y,z;for(x=0;x<=100/5;x++)for(y=0;y<=100/3;y++)for(z=0;z<=100;z++){if(x+y+z==100&&15*x+9*y+z==300)printf(“x=%d,y=%d,z=%d”,x,y,z);}}程序代码3.3递推与迭代法概述递推是计算机数值计算中的一个重要算法。其基本策略是将8、复杂的运算划分为可以重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。在C程序中,利用for语句实现迭代的过程,可以认为是递推的一种特例。采用递推法进行问题求解的关键在于找出递推公式和边界条件。递推与迭代法应用实例1:等比数列求和所谓等比数列是指在一组数据中,后项和前项之前存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。例4:等比数列
6、钱买百鸡“百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。例3:百钱买百鸡。问题分析从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。因此,可以采用穷举法,将不同的
7、公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。算法描述#include#includemain(){intx,y,z;for(x=0;x<=100/5;x++)for(y=0;y<=100/3;y++)for(z=0;z<=100;z++){if(x+y+z==100&&15*x+9*y+z==300)printf(“x=%d,y=%d,z=%d”,x,y,z);}}程序代码3.3递推与迭代法概述递推是计算机数值计算中的一个重要算法。其基本策略是将
8、复杂的运算划分为可以重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。在C程序中,利用for语句实现迭代的过程,可以认为是递推的一种特例。采用递推法进行问题求解的关键在于找出递推公式和边界条件。递推与迭代法应用实例1:等比数列求和所谓等比数列是指在一组数据中,后项和前项之前存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。例4:等比数列
此文档下载收益归作者所有