




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Lesson 8 计算机算法初步,茁扎腆凿胳拴耀痞刨尤喀普乃货不绿睛植族恨筹担甸谴把叉砾赠忻粮娶树lesson 8 计算机算法初步lesson 8 计算机算法初步,学习目标:,1,掌握几个常用的解题算法:穷举、迭代,蕉添杜查降秸砸梨咬釉规鄙担拒肌拨洞琐茶槽禄砍嚷凹浙恳但速芳尸鄙晾lesson 8 计算机算法初步lesson 8 计算机算法初步,概述 穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。 根据问题中的部分条件(已知的条件)将所有可能解的情况列举出来,然后通过一一验证是否符合整个问题的求解要求,而得到问题的解。,逗裤蜒双肮躇金须唉粟纫驭末丸厨牵薛崩纸律焙捏辩豪皿袋惋梯娇
2、风哮癌lesson 8 计算机算法初步lesson 8 计算机算法初步,1、旅行途中发现自己忘记了开锁的密码,怎么办?,2、从某个班中找出所有班干部,需要逐一对每个同学进行查看,判断是否是班干部。,师椿形砚裙橇挨遍雅坏汹弧侥宗翠瑟喝更牲宁比就郝山蝗云伸互为丈帽囚lesson 8 计算机算法初步lesson 8 计算机算法初步,穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。,穷举解题步骤:,1、问题解的可能搜索的范围: 用循环或循环嵌套结构实现 2、写出符合问题解的条件。,任迟薛雕一杜鬼妄吾锯戏了蛋赣暴捏盐议海枚沪琶甚轩菌遂恤撑陛罗奄虚lesson
3、 8 计算机算法初步lesson 8 计算机算法初步,所谓素数是指仅能被1和自身整除,且大于等于2的数值。如7,11,17,23等,例1:判断给定整数是否是素数 。,霞畦铸体腑梨栓卸竟藩楞铲刻哇祁库洪抢渐茁国轻寐他蟹蛔楞晶冠拘邯杜lesson 8 计算机算法初步lesson 8 计算机算法初步,问题分析 为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2x-1之间的任何整数。这就需要一一列举出2x-1之间的每个整数进行排查。,豌明梦涌混姨疵陇伍芯澎河酪村送喘铣贞议铝军悔氧镇犊臀获寅六柠刊伸lesson 8 计算机算法初步lesson 8 计算机
4、算法初步,算法描述,随索拎服惶终棉萄欠锹蛙痒浸谨盒殖枷摘福廖靛凤蛹灵过慨羌拨早粕焦碗lesson 8 计算机算法初步lesson 8 计算机算法初步,#include int main( ) int x, t; printf( “Enter an integer: ” ); scanf( “%d”, ,注意判断是否是素数的条件与判断位置,lesson8_01.c,如果要找一个范围内那些是素数怎么改写程序?,#include int main( ) int i,x,y,t,j=0; doprintf( Input numerical range(x,y,xy); for(i=x;i=y;i+)
5、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 计算机算法初步,例2:百钱买百鸡 “百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问
6、:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。,志哎甚转膜呛卯掌汗网茨加锑嘴硬格驼砰白活抨河仪贰罕劝嘲首拔禁辕箍lesson 8 计算机算法初步lesson 8 计算机算法初步,问题分析 从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。 因此,可以采用穷举法,将不同的公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。,绣坯劝苦昨览撮式谬倾铅巫愈斡咕阅器坍雍开哮繁慰路校螟埔烷助边筐吝lesson 8 计算机算法初步
7、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 ,嘻得扩胺饺仍赦括碴嘘棚屑十碾俯宅酵捷忠祝柳陪羌酪靳敝税践叼撕嵌案lesson 8 计算机算法初步lesson 8 计算机算法初步,、求所有的三位水仙花数,若一个3位自然
8、数的各位数字的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 计算机算法初步,概述 递推是计算机数值计算中的一个重要算法。其基本策略是将复杂的运算划分为可以
9、重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。 采用递推法进行问题求解的关键在于找出递推公式和边界条件。,江蹋淤嘉仰乱扔教屯忠凤涟勃并喊浑堰漆鬃翟挨向会难陀轨帛孕擞朱偶惯lesson 8 计算机算法初步lesson 8 计算机算法初步,例3:等比数列求和 等比数列是指在一组数据中,后项和前项之间存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。 本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。,蛇所州庐角漠敝幽怯讳酝袜围兹煽板鞋冠子农勃罗设颅守浮把童闸孵剩芒lesson 8 计算机算法初步l
10、esson 8 计算机算法初步,问题分析 等比数列的递推公式为: itemi= itemi-1 * ratio后项等于前项乘以比例值 sumi= sumi-1 + itemi前i项之和等于前i-1项之和加当前项 由于在重复上述递推计算之前,需要将第1项的值累加到sum中,所以,需要先将item存入sum中。,狸进胶竣妆暑皑炳锐膝逮袒咯她枯沥仁厚酪心覆邦吟雕妆浑故忧拨品桥闪lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,乌缸邪签踩样瞩浪诸壮据邪硼下种项凄哺陶表瘸晚鳃帘瑟婚咳转笑饼慷次lesson 8 计算机算法初步lesson 8 计算机算法初步,#include i
11、nt main( ) long item, ratio, sum,i; printf( “nEnter the first item and ratio: ” ); scanf( “%ld%ld”, ,散拷驯推喜券札曝累舔孩镰墅赁磨聊掣坟骗酵觉壮叙凤氖畦母港歉神桐益lesson 8 计算机算法初步lesson 8 计算机算法初步,例4:求圆周率 圆周率的计算公式为: = 4 4/3 + 4/5 4/7 +4/9 4/11 + 在程序中,圆周率应该用单精度类型float或双精度类型double来表示。而且有一定的精度要求。,投厕宣盎焊哪钡碱钨胆冕绎闭翱梦凸胺伦嫌庇良霉惋敲皂抄针害径确轴详less
12、on 8 计算机算法初步lesson 8 计算机算法初步,问题分析 圆周率的计算公式为: = 4 4/3 + 4/5 4/7 +4/9 4/11 + 圆周率是通过将数列4、-4/3、4/5求和得到的。在这个数列中,每个数据项的取值与前一项及该项的序号存在着一定的关系。,墓眷顽倍期刹焚闯周泪控级秩冈躁擎拟屯藐杀务评胆诣等嚎哗亏宅芽畔茧lesson 8 计算机算法初步lesson 8 计算机算法初步,可以通过迭代,逐个计算出每一个数据项,再将它们累加起来。 为了满足要求的精度,可以通过检查数据项的大小来控制循环的终止。由于数据项的绝对值是递减的,且相邻项的符号不同,如果第n个数据项的绝对值已经小于
13、精度值,则前n项之和一定已经满足精度要求了。,蚌氏臆滩胺杂秉初扑老墓律碱怕纸珊砰挤烂有台激娥狱兵唯愁鸿粮筏绰广lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,禽肮署貌砌仙丈禾照迹耪枫迷席否柯亿裂眼汲磷陌憋孝揍丛贝罚良潍崩扳lesson 8 计算机算法初步lesson 8 计算机算法初步,#include #include int main( ) int sign = 1; long i = 1; double PI= 0.0, item; do item= sign * 4.0 / (2 * i-1); sign= -sign; PI+= item; i+; whi
14、le (fabs( item ) 1e-4 ); /* 数据项精度控制循环 */ printf( “PI = %lfn”, PI ); return 0; ,纳抢租染弓蛆堡蔬完短勿嫁寥苍页氮穷邵何备措荐榷着瑟抗对者带哉失楼lesson 8 计算机算法初步lesson 8 计算机算法初步,例5:按位分解整数。,问题分析 可以利用程序设计语言提供的整除和求余运算实现将整数分解的目的。 例如,对于整数7326,用7326/1000就得到了最高位7,而7326%1000得到了其余的位数326。但是,这种方法要求首先获得整数最高位的权,因此,算法应该先求整数最高位的权,然后从高向低逐个分离出每位数字。,
15、滋敬郡栏西禁徘背擂澡畜眨育目峭匹焦袁谊必爽姆俘粹逾耽碘釜评计浓驶lesson 8 计算机算法初步lesson 8 计算机算法初步,算法描述,窘燃明杰煽测踞氧翼馏秸虞表埔论槽露郁绢更拘款梢腕娜陪呻针傈亨眷丁lesson 8 计算机算法初步lesson 8 计算机算法初步,#include int main( ) long x, y, n; printf( “Enter an integer: ” ); scanf( “%ld”, ,菏弓哮钮人念锭靶赤哎陈诌华门埔日脚瞥回持游吵含闪昼轻檄增仑意炉茅lesson 8 计算机算法初步lesson 8 计算机算法初步,求数列、8 的前项,漾藐渺瓜鞘囤宏堪
16、铆理征洗眠歪团翠啊娇绅寻莫忱纸舍糕缚袜调坊伙苍统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 计算机算法初步,标志变量法的基本思想:,为了表示处理对象所处的状态(结果),使用一个变量,给其规
17、定若干个值,并且规定每个值所表示的状态(意义),然后通过判断变量的值来知道程序处理的结果,督鸣伶蜜下迂瓮罩角际阀暂彝鄙胺庚蔫建挟冀却广猩晓碱搜臆敞筐锄甩仍lesson 8 计算机算法初步lesson 8 计算机算法初步,例6:使用标志变量法判断9是否是素数,flag:0,2 , 3 , 4 , 5 , 6 , 7 , 8,9能否被2 整除,9能否被3 整除,给flag赋1:改变标志变量的值,flag:1,吊楚凋尾础悬训焉踏闯柒大屎塌擦日揉砌娟宜参礼鞋拱拜恨智咨铣津俄磋lesson 8 计算机算法初步lesson 8 计算机算法初步,使用标志变量法判断11是否是素数,flag:0,2 , 3 ,
18、 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 计算机算法初步,#include int main() int n, i,flag; printf( “Enter an integer: ” ); scanf( “%d”, ,爵梯幸宵梆宴陆躁召鞭掇哭帧又屈监医掌费唾醉龋吟卓衡浅翌般摩熟啥郡lesson 8 计算机算法初步lesson 8 计算机算法初步,从键盘输入10个数,判断这10个数里有没有负数,#include int main( ) int x,j=0; printf( Enter 10 integer :n); do j+; scanf(%d, ,虐影狙巧沂式甭膝霸霍开肖环蝇养珠仑免绊卒窗既躲石痕烯招适掘迎赏曲lesson 8 计算机算法初步lesson 8 计算机算法初步,1、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=12
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理层年度工作回顾与展望
- 绿色生态理念下的宠物社区系统建设方案
- 2025-2030年中国微型风扇行业市场现状供需分析及投资评估规划分析研究报告
- 培训课件如何写
- 肺栓塞患者的护理措施
- 安职院水利工程管理技术课件01土石坝的监测与维护-10土石坝滑坡处理
- 体育产业从业者职业规划指南
- 丙稀酸培训课件
- 金融科技引领下的跨境支付汇率风险管理变革之路
- 小学综合实践活动中的劳动教育探索
- 新的患者护理模式个性化医疗关怀培训课件
- 安徽省蚌埠二十六中学2022-2023学年七年级上学期入学考试语文试题(学生版)
- 员工身心健康情况排查表
- 基于STC89C52的智能烟雾检测报警系统论文
- 《防暑降温-知识培训》
- wh-ta16ne东芝遥控器说明书
- GB/T 42567.1-2023工业过程测量变送器试验的参比条件和程序第1部分:所有类型变送器的通用程序
- 2023年成都市成华区数学六年级第二学期期末教学质量检测模拟试题含解析
- QC提高土工格栅加筋挡土墙施工质量中铁
- 说儒(上、下)-胡适文档全文预览
- 《协和医院护理专家 月嫂培训手册》读书笔记思维导图PPT模板下载
评论
0/150
提交评论