lesson 8 计算机算法初步

上传人:痛*** 文档编号:244754132 上传时间:2024-10-05 格式:PPT 页数:37 大小:434.50KB
返回 下载 相关 举报
lesson 8 计算机算法初步_第1页
第1页 / 共37页
lesson 8 计算机算法初步_第2页
第2页 / 共37页
lesson 8 计算机算法初步_第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Lesson 8 计算机算法初步,茁扎腆凿胳拴耀痞刨尤喀普乃货不绿睛植族恨筹担甸谴把叉砾赠忻粮娶树lesson 8 计算机算法初步lesson 8 计算机算法初步,学习目标:,3,1,掌握几个常用的解题算法:穷举、迭代,蕉添杜查降秸砸梨咬釉规鄙担拒肌拨洞琐茶槽禄砍嚷凹浙恳但速芳尸鄙晾lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,概述,穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。,根据问题中的部分条件(已知的条件)将所有可能解的情况列举出来,然后通过一一验证是否符合整个问题的求解要求,而得到问题的解。,逗裤蜒双肮躇金须唉粟纫驭末丸厨牵薛崩纸律焙捏辩豪皿袋惋梯娇风哮癌lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,1、旅行途中发现自己忘记了开锁的密码,怎么办?,2、从某个班中找出所有班干部,需要逐一对每个同学进行查看,判断是否是班干部。,师椿形砚裙橇挨遍雅坏汹弧侥宗翠瑟喝更牲宁比就郝山蝗云伸互为丈帽囚lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。,穷举解题步骤:,1、问题解的可能搜索的范围:,用循环或循环嵌套结构实现,2、写出符合问题解的条件。,任迟薛雕一杜鬼妄吾锯戏了蛋赣暴捏盐议海枚沪琶甚轩菌遂恤撑陛罗奄虚lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,所谓素数是指仅能被1和自身整除,且大于等于2的数值。如7,11,17,23等,例1:判断给定整数是否是素数。,霞畦铸体腑梨栓卸竟藩楞铲刻哇祁库洪抢渐茁国轻寐他蟹蛔楞晶冠拘邯杜lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,问题分析,为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2x-1之间的任何整数。这就需要一一列举出2x-1之间的每个整数进行排查。,豌明梦涌混姨疵陇伍芯澎河酪村送喘铣贞议铝军悔氧镇犊臀获寅六柠刊伸lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,N,Y,开始,输入x,2,t,t x,t 加1,x%t=0,结束,输出“不是素数”,输出“是素数”,Y,N,t=x,Y,N,随索拎服惶终棉萄欠锹蛙痒浸谨盒殖枷摘福廖靛凤蛹灵过慨羌拨早粕焦碗lesson 8 计算机算法初步lesson 8 计算机算法初步,#include ,int main(),int x,t;,printf(“Enter an integer:”);,scanf(“%d”,for(t=2;tx;t+)/*列举小于x大于1的所有整数*/,if(x%t=0),break;,if(t=x)/*是否通过循环条件出口*/,printf(“%d is primen”,x);,else,printf(“%d isnt primen”,x);,return 0;,注意判断是否是素数的条件与判断位置,lesson8_01.c,如果要找一个范围内那些是素数怎么改写程序?,#include ,int main(),int i,x,y,t,j=0;,doprintf(Input numerical range(x,y,xy):n);,scanf(%d%d,while(xy);,for(i=x;i=y;i+),for(t=2;ti;t+)/*列举小于i大于1的所有整数*/,if(i%t=0)break;,if(t=i)/*是否通过循环条件出口*/,j+;printf(%d%c,i,j%8=0?n:t);,return 0;,每行输出8个数,描埂唾辉溪涪窿饱胖撕搭龋硫诽隆掉啄江彩避孙轿长洒鸵娱翘肃荡岂里畴lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,例2:百钱买百鸡,“百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。,志哎甚转膜呛卯掌汗网茨加锑嘴硬格驼砰白活抨河仪贰罕劝嘲首拔禁辕箍lesson 8 计算机算法初步lesson 8 计算机算法初步,3,穷举法,2,问题分析,从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。,因此,可以采用穷举法,将不同的公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。,绣坯劝苦昨览撮式谬倾铅巫愈斡咕阅器坍雍开哮繁慰路校螟埔烷助边筐吝lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,埃洗惨来峭赞易姓靡痰腰肖氟而逛铁难跺鸥芳然姜泉优刺厄荡眩圭豹疚烛lesson 8 计算机算法初步lesson 8 计算机算法初步,#include ,#include ,int main(),int x,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=%dn”,x,y,z);,return 0;,嘻得扩胺饺仍赦括碴嘘棚屑十碾俯宅酵捷忠祝柳陪羌酪靳敝税践叼撕嵌案lesson 8 计算机算法初步lesson 8 计算机算法初步,3,课堂练习,3,、求所有的三位水仙花数,若一个3位自然数的各位数字的3次方之和等于它本身,则称这个自然数为水仙花数。,例如:153(153=13+33+53)是水仙花数,#include ,int main(),int i,j,k,x;,for(x=100;x1000;x+),i=x/100;j=x/10%10;k=x%10;,if(i*i*i+j*j*j+k*k*k=x),printf(x=%dn,x);,return 0;,孟腐娟狄嘘桔棘四忘禄泵怜杜莫雁链院釜掣墩醒熙锈桑稻炮捂斧拨坐唬拴lesson 8 计算机算法初步lesson 8 计算机算法初步,3,递推与迭代法,4,概述,递推是计算机数值计算中的一个重要算法。其基本策略是将复杂的运算划分为可以重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。,采用递推法进行问题求解的关键在于找出递推公式和边界条件。,江蹋淤嘉仰乱扔教屯忠凤涟勃并喊浑堰漆鬃翟挨向会难陀轨帛孕擞朱偶惯lesson 8 计算机算法初步lesson 8 计算机算法初步,3,递推与迭代法,4,例3:等比数列求和,等比数列是指在一组数据中,后项和前项之间存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。,本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。,蛇所州庐角漠敝幽怯讳酝袜围兹煽板鞋冠子农勃罗设颅守浮把童闸孵剩芒lesson 8 计算机算法初步lesson 8 计算机算法初步,3,递推与迭代法,4,问题分析,等比数列的递推公式为:,itemi=itemi-1*ratio后项等于前项乘以比例值,sumi=sumi-1+itemi前i项之和等于前i-1项之和加当前项,由于在重复上述递推计算之前,需要将第1项的值累加到sum中,所以,需要先将item存入sum中。,狸进胶竣妆暑皑炳锐膝逮袒咯她枯沥仁厚酪心覆邦吟雕妆浑故忧拨品桥闪lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,乌缸邪签踩样瞩浪诸壮据邪硼下种项凄哺陶表瘸晚鳃帘瑟婚咳转笑饼慷次lesson 8 计算机算法初步lesson 8 计算机算法初步,#include ,int main(),long item,ratio,sum,i;,printf(“nEnter the first item and ratio:”);,scanf(“%ld%ld”,sum=item;,for(i=1;i 1e-4);/*数据项精度控制循环*/,printf(“PI=%lfn”,PI);,return 0;,纳抢租染弓蛆堡蔬完短勿嫁寥苍页氮穷邵何备措荐榷着瑟抗对者带哉失楼lesson 8 计算机算法初步lesson 8 计算机算法初步,3,递推与迭代法,4,例5:按位分解整数。,问题分析,可以利用程序设计语言提供的整除和求余运算实现将整数分解的目的。,例如,对于整数7326,用7326/1000就得到了最高位7,而7326%1000得到了其余的位数326。但是,这种方法要求首先获得整数最高位的权,因此,算法应该先求整数最高位的权,然后从高向低逐个分离出每位数字。,滋敬郡栏西禁徘背擂澡畜眨育目峭匹焦袁谊必爽姆俘粹逾耽碘釜评计浓驶lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,N,Y,开始,输入x,计算整数最高位权n,n=1,x/n的余数,x,n/10,n,结束,打印x/n,窘燃明杰煽测踞氧翼馏秸虞表埔论槽露郁绢更拘款梢腕娜陪呻针傈亨眷丁lesson 8 计算机算法初步lesson 8 计算机算法初步,#include ,int main(),long x,y,n;,printf(“Enter an integer:”);,scanf(“%ld”,y=x;,n=1;,while(y10),n*=10;,y=y/10;,do,printf(“%ldt”,x/n);,x=x%n;,n=n/10;,while(n=1);,return 0;,菏弓哮钮人念锭靶赤哎陈诌华门埔日脚瞥回持游吵含闪昼轻檄增仑意炉茅lesson 8 计算机算法初步lesson 8 计算机算法初步,3,课堂练习,5,求数列、8,的前项,漾藐渺瓜鞘囤宏堪铆理征洗眠歪团翠啊娇绅寻莫忱纸舍糕缚袜调坊伙苍统lesson 8 计算机算法初步lesson 8 计算机算法初步,#include,void main(),int f1=1,f2=1,f3,k;,printf(%dt%dt,f1,f2);,for(k=3;k=18;k+),f3=f1+f2;,printf(%dt,f3);,f1=f2;f2=f3;,printf(n);,参考程序:,剿雀璃跑桓火咽共哎氓冯掷胰盗啤除紧把似涵敦毕拷虫鲍眩测坝潞竣员郴lesson 8 计算机算法初步lesson 8 计算机算法初步,3,标志变量法,6,标志变量法的基本思想:,为了表示处理对象所处的状态(结果),使用一个变量,给其规定若干个值,并且规定每个值所表示的状态(意义),然后通过判断变量的值来知道程序处理的结果,督鸣伶蜜下迂瓮罩角际阀暂彝鄙胺庚蔫建挟冀却广猩晓碱搜臆敞筐锄甩仍lesson 8 计算机算法初步lesson 8 计算机算法初步,3,标志变量法,6,例6:使用标志变量法判断9是否是素数,flag:0,2,3,4,5,6,7,8,9能否被2 整除,9能否被3 整除,给flag赋1:改变标志变量的值,flag:1,吊楚凋尾础悬训焉踏闯柒大屎塌擦日揉砌娟宜参礼鞋拱拜恨智咨铣津俄磋lesson 8 计算机算法初步lesson 8 计算机算法初步,3,标志变量法,6,使用标志变量法判断11是否是素数,flag:0,2,3,4,5,6,7,8,9,10,11能否被2 整除,11能否被3 整除,11能否被4 整除,11能否被5 整除,11能否被6 整除,11能否被7 整除,11能否被8 整除,11能否被9 整除,11能否被10 整除,结束!,拦景树谗忿胆还苍币杖锄炔双蛋窿桓据略挺末抢媒祸兑措衍毅怂什糜硝貌lesson 8 计算机算法初步lesson 8 计算机算法初步,#
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!