算法选择与自我调试.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法选择与自我调试

算法选择与自我调试 ——自主编译时的重要过程 相关知识回顾 计算机解题步骤 ?? 1.定义问题、分析问题 –输入、输出是什么? –有什么限制条件,关键点 ?? 2.设计算法 ?? 3.实现程序(coding) ?? 4.运行、调试通过 ?? 5.完成文档、维护程序 相关知识回顾 算法设计基本原则 抽象 ——抽象出数学模型 ?? 枚举 ——对输入数据,列出不同情况从而采取不同处理方式,一般用条件结构实现 ?? 归纳 ——总结出规律从而简化算法,一般用循环结构实现 一、算法选择 阅读题目后,算法随着产生,需要捕捉 用数学模型概括算法 比较不同算法的优劣 确定算法(过程) ,开始编程 一、算法选择 阅读题目后,算法随着产生,需要捕捉 以第一题为例 问题描述   给定一个整数,请将该数各个位上数字反转得到一个新数。 样例输入 123 样例输出 321 样例输入 -380 样例输出 -83 比较不同算法优劣 第一种算法:第一想法:倒叙打印(字符数组) 第二种算法:可以考虑用整形变量储存数据 进行比较(着重考虑可行性以及是否已出错): 用整形变量可以节省空间,但处理过程繁琐,并且运用循环,运行时间长 用字符数组虽占用空间较多,但倒叙输出时简单易行,同时解决正负问题 确定算法,开始编程 对于本题,选择第一种算法,并考虑特例 scanf(%s,str); l=strlen(str); flag=0; if (str[0]==-) printf(-); //判断正负 for (i=l-1;i=1;i--) { if (str[i]!=‘0’) flag=1; //判断末尾0,借助变量flag if (flag==1) { printf(%c,str[i]); } } if (str[0]!=-) printf(%c\n,str[0]); 二、自我调试 编程时所遇到的错误 编译错误 链接错误 运行错误 1.编译错误 比较容易发现与解决 学会运用编译工具给出的提示,双击对话框中的错误,会出现提示,指向错误所在行,立即修改 2.链接错误 编译器仍会提示 产生链接错误时,编译一般已经通过。问题一般为两大类: 1.数据库调用错误 2.变量未定义 3.运行错误 自主编译程序时的重中之重 遇到运行错误,一般分为两种: 1.无结果。如:死循环 2.结果出错。 结果出错——样例错误,易修改。 ——特例错误,不易发现,看到我们最不希望看到的Wrong Answer。 特殊数据的寻找 “零”——简单而又复杂的数字 越界——常见易忽略问题 输出格式——思维定式,查不出来的错误 将理论应用于实践 牛顿迭代法求方程的根 抽象出数学模型及步骤:迭代、比较、计数 设计算法:确定使用循环结构 开始编程:1。whlie循环 2。计数器的清零与使用 t=1; while (fabs(a*z*z*z+b*z*z+c*z+d)1e-7) { t++; z=z-(a*z*z*z+b*z*z+c*z+d)/ (3*a*z*z+2*b*z+c); } 将理论应用于实践 教室排课 抽象数学模型及步骤:比较、计数、 判断是否有解 设计算法:确定循环结构 开始编程:1。for循环 2。计数器的清零与使用 (如何判断是否有解) if ((a!=b) (b!=c) (c!=d) (d!=a) (a!=c) (a!=d) (b!=d)) if ((num[a]=i) (num[b]=j) (num[c]=k) (num

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档