- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3讲 算法初步 一、解题方法 二、算法举例---穷举法 三、算法举例---递推与迭代法 四、良好的编程风格 一、解题方法 分析问题,想出策略;自顶向下,逐步求精。 例如,编写一个通讯录程序 通讯录需要存储什么数据?存在什么地方? 程序的功能 输入一个新名字 删除一个名字 显示整个通讯录 搜索一个名字 进入、退出程序等 ……。具体到每一项功能 菜单,将这些功能分类别设计 用计算机解决问题的步骤 分析问题 选择解决方案 编写程序 调试程序 测试程序 数据结构 数据对象:分析所研究问题,提炼出性质相同的数据元素。 对象之间的关系 通讯录数据 用于管理的数据 在此基础上,想出处理的方法---算法 算法 算法是指用计算机解决问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。 算法的特征: 确定性 逻辑性 有穷性 用程序流程图描述算法 描述算法的方法有很多 程序流程图:图形化的描述程序执行过程(图是工程师的语言) 使得思想集中于算法设计,不受语言细节干扰 再依据算法,用语言编写程序 程序流程图的图形符号:P60 例:求一元二次方程ax2+bx+c=0 的解 #include stdio.h #include math.h main( ) { int a, b, c,t; printf( Input a,b,c: ); scanf( %d%d%d, a, b, c ); t = b*b - 4*a*c; if (t0) printf( No solution\n ); else if ( t==0 ) printf( X = %lf\n, -b/(2.0*a) ); else { double t0; t0 = sqrt( (double)t ); printf( X1 = %lf, X2= %lf\n, (-b+t0)/(2*a), (-b-t0)/(2*a) ); } } 二、算法举例---穷举法 列出所有可能情况,逐个排查,从中找出符合条件的解。 关键是明确问题所有可能性,注意可能情况是有限的。 用什么基本控制结构? 优点?缺点? 例:判断给定整数是否是素数 问题分析 利用素数的定义来判别。对于给定整数x,用2~x-1之间的每个整数试除,若都不能整除则是素数,否则不是素数。 一次试除成功(不能整除),并不能说明x是素数,只有所有试除都成功,才能断定x是素数;但一次试除失败(能整除),则可断定x不是素数 例:判断给定整数是否是素数 解决方案 数据结构设计 整型变量存储素数:int x ; 算法设计 穷举的范围---循环开始和结束:2~x-1 数据元素的关系---循环的步进:1 逐个排查的过程---循环的内容:试除 #include stdio.h main( ) { int x, t; printf( Enter an integer: ); scanf( %d, x ); for (t = 2; tx; t++ ) if ( x%t == 0 ) break; if ( t == x ) printf( %d is prime\n, x ); else printf( %d isnt prime\n, x ); } 例:百钱买百鸡 问题描述 某人有钱百枚,希望买一百只鸡;公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡 问题分析 公鸡、母鸡和小鸡的数量之和为100。 采用穷举法,将100只鸡中的所有公鸡、母鸡和小鸡的组合枚举一遍,找出价钱正好是100的组合。 解决方案 数据结构 设: x——公鸡的个数 y——母鸡的个数 z——小鸡的个数 算法 遍历x、y、z,三层循环嵌套 循环起止:x:0~100/5;y:0~100/3; z:0~100 步进:1 循环内容:排查条件: 5x+3y+z/3=100 x+y+z=100 #include stdio.h 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==30
您可能关注的文档
- 北方工业大学建筑结构抗震课件 地震作用和结构抗震验算.ppt
- 北方工业大学建筑结构抗震课件 多层混合结构房屋.ppt
- 北方工业大学建筑结构抗震课件 建筑结构抗震验算.ppt
- 北方工业大学建筑结构抗震课件 结构地震反应的时程分析.ppt
- 北方工业大学建筑结构抗震课件 振型分解反应谱法.ppt
- 北方民族大学程序设计语言课件 算法.ppt
- 北方民族大学程序设计语言课件第七章 运算符重载.ppt
- 北方民族大学程序设计语言课件第十二章 异常处理.ppt
- 北方民族大学程序设计语言课件第十一章 输入输出流.ppt
- 北方民族大学程序设计语言课件第十章 模板.ppt
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
最近下载
- 水上滑道结构应力分析报告.pdf
- 《社会历史的决定性基础》ppt课件(42页).pptx
- 2023-2024学年北京市东城区九年级(上)期末语文试卷.doc
- 隧道竖井施工方案.docx
- 数电课程设计篮球24秒倒计时.pdf VIP
- 医院装备主管面试题及参考答案结构化面试题.docx VIP
- 经尿道前列腺电切术麻醉的相关问题.ppt VIP
- 英文学术写作实战(北大)大学MOOC慕课 客观题答案.docx
- 【课件】Unit5ListeningandSpeaking课件高中英语人教版必修第一册.pptx VIP
- 辽宁省协作校2023-2024学年高一下学期5月期中考试数学试卷(含答案).docx VIP
文档评论(0)